【发布时间】:2011-06-29 20:47:11
【问题描述】:
我在英特尔编译器中使用 lambda 函数时遇到问题,尤其是以下代码无法编译:
template<typename T>
std::function<T (int)> make_func(T x) {
return [=](int index) -> T
{
return x;
};
}
我得到的错误是
error: namespace "std" has no member "function"
代码在我的 Mac 上编译并运行良好,(macports gcc 版本 4.5)。错误在起作用,我们使用的是 Intel 编译器版本 11.1。它确实接受 lambda 函数(带有 -std=c++0x 选项),例如:
auto lam = [=](int j) -> int {
printf("testing for lambdas: %d\t%d\n", n, j);
return n;
};
int g = lam(7);
工作中安装的gcc版本是4.1.2,估计是标准库老了?
/bin/libc.so.6
说它是用 gcc 4.1.2 编译的 2.5 版。
有没有办法解决这个问题?
提前感谢您的帮助
【问题讨论】:
-
您是否加入了
<functional>?