我找到了一个简单的代码:
using namespace boost::lambda;
typedef std::istream_iterator<int> in;
std::for_each(
in(std::cin), in(), std::cout << (_1 * 3) << " " );
而且我发现_1
是用来表示每个输入整数的,但是这是怎么_1
工作的呢?有谁知道?
PS:此代码来自BOOST的第一个示例。当我运行文件时,我发现for_each将永远不会终止,并且每次单击“返回”后,它将保持读取数字。知道为什么会这样吗?
该std::placeholders
命名空间包含占位符对象[_1, . . . _N]
,其中N是一个实现定义的最大数目。
当在std::bind
表达式中用作参数时,占位符对象存储在生成的函数对象中,并且当该函数对象使用未绑定参数调用时,每个占位符_N都将替换为相应的第N个未绑定参数。
占位符对象的类型为DefaultConstructible
和CopyConstructible
,它们的默认复制/移动构造函数不会引发异常,并且对于任何占位符_N
,该类型std::is_placeholder<decltype(_N)>
都是定义的,并且是从派生的std::integral_constant<int, N>
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句