gpt4 book ai didi

c++ - 使用 constexpr 时的 Intel 编译器和 "cannot have an in-class initializer"

转载 作者:行者123 更新时间:2023-12-02 01:51:19 25 4
gpt4 key购买 nike

以下测试程序使用 g++ 编译和运行良好。使用 Intel icpc (14.0.2),如果我使用像 double 这样的显式类型而不是模板,它将编译并运行。带有icpc的模板版本产生错误:

icpc -g -O2 -I. -std=c++0x -c main.cc -o main.o

main.cc(10): error: a member of type "const T [9]" cannot have an in-class initializer
static constexpr T dx_[9] = {

测试代码

template<typename T>
class myclass {

public:

static constexpr T dx_[9] = {
1.5, 2.0, -0.5,
-0.5, 0.0, 0.5,
0.5, -2.0, -1.5
};
};

template<typename T> constexpr T myclass<T>::dx_[9];

int main(int argc, char *argv[]) {
return 0;
} // main

为什么我在使用 constexpr 时收到错误“cannot have an in-class initializer”

最佳答案

这是Intel编译器的一个bug,已经提交给Intel,会在以后的版本中修复。

另见 Multiple constexpr bugs , sfinae bug with intel c++ compiler 15method constexpr bug with c++ compiler 15在英特尔论坛上。

关于c++ - 使用 constexpr 时的 Intel 编译器和 "cannot have an in-class initializer",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22540153/

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