インライン展開失敗するなぁ.
#include <iostream> #include <boost/function.hpp> struct F_t { double operator()(const double & x) const { return 1.5 * x; } } F; inline double G(const double & x) { return 1.5 * x; } int main(int argc, char *argv[]) { boost::function <double(const double &)> f = F; boost::function <double(const double &)> g = G; std::cout << f(2.0) << std::endl; std::cout << g(2.0) << std::endl; }
ただの関数 g の場合はインライン展開されるけど関数オブジェクト f のときは bool boost::detail::function::has_empty_target(...) が展開できないといわれる.さてどうしたものか?
- Newer: AWK - はじめ