#C++0x

wszystkie notatki oznaczone etykietą "C++0x"

Bind zastępuje predykaty!

Boost.bind to potężne narzędzie. Dzięki niemu możemy pozbyć się wielu prostych i trywialnych, a także tych trochę bardziej skomplikowanych funktorów, jakie musieliśmy definiować, bo standardowe adaptery funkcyjne z STL są ograniczone. Za niedługo zobaczymy je w standardzie, a obecnie dostępny jest w TR1. To za jego sprawką z kodu źródłowego xime zniknie kilka predykatów. Zostaną zastąpione jedno-dwu linijkowymi złożeniami bindowych adapterów i obiektów funkcyjnych. Kod stanie się bardziej czytelny i spójny, bo nawet prosty predykat wykorzystujący jakiś element lub metodę obiektu definiowany jest jako klasa funktora, co przy kilku dodatkowych definicjach klas powoduje rozrastanie się kodu.

Czytaj dalej

Variadic templates

Niedawno marudziłem o makrach i funkcjach ze zmienną liczbą argumentów, więc dziś do uzupełnienia tego tematu wspomnę kilka słów o wzorcach ze zmienną liczbą parametrów, czyli Variadic templates, które niebawem staną się oficjalną częścią standardu języka C++. Modelowa, prosta funkcja wzorcowa, która jako przykład występuje prawie w każdej wzmiance na temat “nowego ficzera”. template<typename T> void print(const T& t) { std::cout << t; } template<typename T, typename... Args> void print(const T& t, const Args&.

Czytaj dalej

Funkcje lambda C++0x w roli predykatów

Wspominałem nie tak dawno o predykatach szablonowych przy wyszukiwaniu elementów w STL-owych kontenerach za pomocą funkcji find_if. Przedstawiłem tam kilka sposób wykorzystania tego algorytmu i prosty funktorów na bazie biblioteki STL i boost. Dzięki nadchodzącemu wielkimi krokami nowemu standardowi C++0x, tworzenie prostych predykatów stanie się wkrótce jeszcze prostsze dzięki funkcjom i wyrażeniom lambda. Nie trzeba będzie już pisać prostych funktorów, które nieraz nie mogły znajdować się w pobliżu wykorzystania, przez niemożliwość zdefiniowania szablonowej klasy wewnątrz funkcji lub metody, przez co trochę uciążliwe było ich używanie.

Czytaj dalej

C++0x nadchodzi!

Jak podaje Herb Sutter na swoim blogu w ostatniej notce “September 2008 ISO C++ Standards Meeting: The Draft Has Landed, and a New Convener”, draft nowego standardu C++ jest już dostępny publicznie do pobrania: N2798. Jedynie można spodziewać się jeszcze jakichś małych poprawek błędów i usprawnień w stosunku do tego dokumentu. Pozostaje już tylko cierpliwie czekać na finalną wersję i na twórców kompilatorów. Aczkolwiek, większość liczących się kompilatorów na rynku już wspiera w jakimś stopniu większość nowego standardu, ale na oficjalne, pełne wsparcie trzeba będzie poczekać pewnie jakiś czas po opublikowaniu finalnej wersji standardu.

Czytaj dalej