Boost C++ Libraryのお勉強その8
functionとかfunctionalとか紛らわしいんですが…。
Boost.Function
関数っぽいものを保持できるクラス。structの定義をmain()内に書いたらコンパイルできないのにちょっとハマった。
#include <iostream> #include <boost/function.hpp> struct pow4 { int operator() (int x) const { return x * x * x * x; }; }; int main(void) { boost::function<int (int x) > fun; fun = pow4(); std::cout << fun(4) << std::endl; return 0; }
256
Boost.Function_Types
関数の型チェックとか色々。
#include <iostream> #include <boost/function_types/is_function_pointer.hpp> int main(void) { std::cout << boost::function_types::is_function_pointer < int (*) (void) >::value << std::endl; return 0; }
1
Boost.Functional
STLのやつを拡張したもの。
#include <iostream> #include <string> #include <algorithm> #include <cctype> #include <boost/functional.hpp> int main(void) { std::string s = "abcdef@"; std::cout << *std::find_if(s.begin(), s.end(), boost::not1(isalpha)) << std::endl; return 0; }
@