gpt4 book ai didi

c++ - std::function<> 和 Intel 编译器版本 11.1

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:28:55 26 4
gpt4 key购买 nike

我在使用英特尔编译器中的 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 版。

有解决办法吗?

在此先感谢您的帮助

最佳答案

我在安装了 gcc 4.5.2 的系统上使用 icc 11.1 得到了相同的行为。

g++的标题 <functional>#ifdef __GXX_EXPERIMENTAL_CXX0X__ 保护icc 时未定义被使用。

我会考虑切换到 boost::function在此设置中,当然可以与 icc 配合使用。

关于c++ - std::function<> 和 Intel 编译器版本 11.1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6527064/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com