Bind zastępuje predykaty!

Boost.bind to potężne narzędzie, za niedługo zobaczymy je w standardzie, obecnie dostępne w TR1. 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 adaptory funkcyjne z STL są ograniczone. To przez niego z kodu źródłowego xime zniknie kilka predykatów, które zostaną zastąpione jedno-dwu … Czytaj dalej Bind zastępuje predykaty!

numeric_cast

Korzystając z wzorca numeric_limits, o którym wspomniałem w poprzedniej notce i informacjach o min/max wartości danego typu numerycznego, można w bardzo łatwy sposób stworzyć sobie bezpieczny, odporny na underflow/overflow, „operator” – wzorzec do konwersji wartości liczbowych pomiędzy poszczególnymi typami numerycznymi. template <typename TargetType, typename SourceType> inline TargetType numeric_cast(SourceType arg) {   if (arg < std::numeric_limits<TargetType>::min()) … Czytaj dalej numeric_cast

find_if predicate

Nieraz zdarza się, ze przechowujemy w kontenerach STL-owych niebanalne obiekty, czy typy nieco bardziej rozbudowane od typów wbudowanych. Załóżmy, że mamy prosty vector wypełniony prostymi obiektami o budowie zbliżonej do następującej struktury: struct MyObj{ int foo; int bar; std::string name; }; I chcielibyśmy wyszukać w nim element o nazwie „foo”. Oczywiście najprostszym i najszybszym rozwiązaniem … Czytaj dalej find_if predicate