C++ 1z將引入「constexpr if」 - 根據條件,如果將刪除其中一個分支。看起來合理而有用。 但是,沒有constexpr關鍵字是不可能的?我認爲在編譯期間,編譯器應該知道在編譯期間是否知道情況是否已知。如果是這樣,即使是最基本的優化級別也應該刪除不必要的分支。 例如(見godbolt:https://godbolt.org/g/IpY5y5): int test() {
c
if constexpr是在C++程序中擺脫預處理器的一大步。但是它只能在功能 - 就像這個例子: enum class OS
{
Linux,
MacOs,
MsWindows,
Unknown
};
#if defined(__APPLE__)
constexpr OS os = OS::MacOs;
#elif defined(__MING