繁体   English   中英

C ++ 17 static和constexpr

[英]C++17 static and constexpr

我正在使用与Xcode 9.3捆绑在一起的clang,我试图了解以下结果是否是C ++ 17更改的有意部分:

#include <iostream>

template<typename T> struct Test {
    static const int TEN;
};
template<typename T> constexpr int Test<T>::TEN = 10;

int main(int argc, const char * argv[]) {
    std::cout << Test<int>::TEN << std::endl;
    return 0;
}

使用c ++ 11或c ++ 14编译时,会打印“10”。 但是,用c ++ 17编译它会打印“0”。

这是怎么回事?

在其他地方发布之后,一位clang开发人员承认这是clang-5 c ++ 17实现中的一个错误,并且在clang-6中已经修复了。

感谢tkausl的初步评论,其中显示了clang-6和gcc的不同结果,这让我在其他地方提出了问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM