【发布时间】:2017-12-09 08:33:02
【问题描述】:
我如何在boost::lambda::placeholder1_type 上std::sqrt()?
以下程序编译并执行良好。不知何故,它设法将boost::lambda::_1 转换为double 并乘以5.0。
#include <boost/lambda/lambda.hpp>
#include <iostream>
#include <cmath>
int main() {
std::array<double, 6> a = {1, 4, 9, 16, 25, 36};
std::for_each(a.begin(), a.end(),
std::cout << boost::lambda::_1 * 5.0 << " "
);
}
但是,如果我将 std::cout 行替换为
std::cout << std::sqrt(boost::lambda::_1) << " "
编译器 (g++) 说
参数 1 的未知转换来自 'boost::lambda::placeholder1_type {aka const boost::lambda::lambda_functor >}' 到 ‘双’
那么,我如何在这个 std::for_each 循环中从 boost::lambda::_1 取平方根?
【问题讨论】:
-
你认为 boost::lambda::_1 在那里做什么?
-
问题:当您拥有 C++11 时,为什么还要使用 Boost.Lambda?
-
如果你想调用一个函数,那么看来你应该使用bind expression。