簡體   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