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