“ cout <<(_ 1 * 3)”是什么意思?

mmjuns

我找到了一个简单的代码:

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将永远不会终止,并且每次单击“返回”后,它将保持读取数字。知道为什么会这样吗?

秋季歌手

这看起来像一个占位符(也请看这个SO问题)

std::placeholders命名空间包含占位符对象[_1, . . . _N],其中N是一个实现定义的最大数目。

当在std::bind表达式中用作参数时,占位符对象存储在生成的函数对象中,并且当该函数对象使用未绑定参数调用时,每个占位符_N都将替换为相应的第N个未绑定参数。

占位符对象的类型为DefaultConstructibleCopyConstructible,它们的默认复制/移动构造函数不会引发异常,并且对于任何占位符_N,该类型std::is_placeholder<decltype(_N)>都是定义的,并且是从派生的std::integral_constant<int, N>

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章