【发布时间】:2020-05-15 06:25:39
【问题描述】:
三元(条件)运算符可以用作类似于 C++17 中引入的constexpr if() 吗?
我想为模板中的成员变量初始化添加一些条件。以下表达式会在编译时或运行时解析吗?如果是这样,是否有任何其他运算符在编译时解析,从而可以避免模板特化?
template<int a>
struct hello {
constexpr static int n = (a != 0) ? 10 : 20;
}
【问题讨论】:
-
"这样可以避免模板特化" 为什么要避免它?
-
@Acorn 赞成简洁
-
您可能应该使用
constexpr而不是const,尤其是在编译时评估对您很重要的情况下(尽管在这种情况下它很可能不会产生影响。) -
如果你只传入编译时常量表达式,任何体面的编译器都应该能够在编译时计算它。
-
尝试预处理器
#if。
标签: c++ c++17 conditional-operator compile-time compile-time-constant