我已经看到了一些相关的问题,但我仍然感到困惑。这个语法有什么问题:
boost::function<int (int)> g = f;
boost::function<int (int)> g2 = 2*g(boost::lambda::_1);我已经在gcc 4.3.4上用boost 1.35和1.38 (这是我周围的两个安装)试过了,它们都给出了错误的变体:
no match for call to '(boost::function<int ()(int)>) (const boost::lambda::lambda_functor<boost::lambda::placeholder<1> >&)'发布于 2011-02-09 03:14:24
您不能直接调用带有占位符的函数。你必须使用use bind。
boost::function<int (int)> g2 = 2 * boost::lambda::bind(g, boost::lambda::_1);(Example)
发布于 2012-03-09 21:19:39
我建议你放弃Boost.Lambda,因为它已经过时了。支持C++0x的编译器提供了本机lambda,并且更容易理解。您可以使用4.4或更高版本的GCC,Visual Studio2010也支持C++0x。
https://stackoverflow.com/questions/4937136
复制相似问题