7
我想試驗一個項目從gcc到clang ++。我承認無知就我而言,我不知道爲什麼代碼Constexpr編譯錯誤與鏗鏘++不g ++
template <typename T>
constexpr T pi{std::acos(T(-1.0))};
下位相剋默默編譯++但鐺++產生錯誤
trig.hpp:3:13: error: constexpr variable 'pi<float>' must be initialized by a constant expression
constexpr T pi{std::acos(T(-1.0))};
,我希望有人誰知道更多關於它比我能啓發我。
注意:嘗試使用-std = C++ 14和C++ 1y。在clang版本3.6.2下失敗(tags/RELEASE_362/final)。適用於g ++(GCC)5.2.0。
看起來相關[它是一個符合編譯器擴展將非constexpr標準庫函數視爲constexpr?](http://stackoverflow.com/q/27744079/1708801) –
@ShafikYaghmour我以爲我搜索得很好。我錯了。謝謝。這確實是一個令人失望的結果。我也很驚訝,GCC在標準允許禁止的情況下至少會發出警告。我也正在編譯-pedantic! 如果你想寫一個答案,我會接受它。 – Timtro
我不覺得這個問題沒有出現,關鍵字的重疊似乎很小。當我大約一年前第一次遇到這個問題時,我找不到任何東西,直到我意外地碰到2013年語言工作組的問題時,我才把它們放在一起。 –