下面的代碼在GCC(4.9.3)和VC++(19.00.23506)中編譯得很好,但在Clang( 3.7.0)。 error: constexpr function's return type 'Foo' is not a literal type note: 'Foo' is not literal because it is not an aggregate and has no const
我趕上試圖與consexpr裝飾時錯誤「constexpr功能......不是迴歸語句的身體」: $ g++ -std=c++11 test.cxx -o test.exe
test.cxx: In instantiation of ‘static constexpr unsigned int MinMaxStep<min, max
, step>::ValidValue(unsigned i
C++ 1z將引入「constexpr if」 - 根據條件,如果將刪除其中一個分支。看起來合理而有用。 但是,沒有constexpr關鍵字是不可能的?我認爲在編譯期間,編譯器應該知道在編譯期間是否知道情況是否已知。如果是這樣,即使是最基本的優化級別也應該刪除不必要的分支。 例如(見godbolt:https://godbolt.org/g/IpY5y5): int test() {
c