首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Boost函数和boost lambda

Boost函数和boost lambda
EN

Stack Overflow用户
提问于 2011-02-09 03:01:29
回答 2查看 1.2K关注 0票数 4

我已经看到了一些相关的问题,但我仍然感到困惑。这个语法有什么问题:

代码语言:javascript
复制
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 (这是我周围的两个安装)试过了,它们都给出了错误的变体:

代码语言:javascript
复制
no match for call to '(boost::function<int ()(int)>) (const boost::lambda::lambda_functor<boost::lambda::placeholder<1> >&)'
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-02-09 03:14:24

您不能直接调用带有占位符的函数。你必须使用use bind

代码语言:javascript
复制
boost::function<int (int)> g2 = 2 * boost::lambda::bind(g, boost::lambda::_1);

(Example)

票数 8
EN

Stack Overflow用户

发布于 2012-03-09 21:19:39

我建议你放弃Boost.Lambda,因为它已经过时了。支持C++0x的编译器提供了本机lambda,并且更容易理解。您可以使用4.4或更高版本的GCC,Visual Studio2010也支持C++0x。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4937136

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档