【发布时间】:2016-12-07 07:44:45
【问题描述】:
也许我遗漏了一些东西,但我找不到任何提示:C++17 中是否有与 constexpr-if 等效的 constexpr 三元运算符?
template<typename Mode>
class BusAddress {
public:
explicit constexpr BusAddress(Address device) :
mAddress(Mode::write ? (device.mDevice << 1) : (device.mDevice << 1) | 0x01) {}
private:
uint8_t mAddress = 0;
};
【问题讨论】:
-
不,没有。但是,如果您告诉我们更多您想要做什么,我们可以建议一个解决方法。
-
假设如果三元表达式可以是
constexpr,那么编译器将在编译时计算它是否可以? (换句话说,不需要特殊的constexpr三元运算符) -
@qxz 我认为与
if constexpr的真正类似物还具有未采用的分支将被丢弃的属性(因此即使该分支未编译,整个事情也会编译)。 -
刚刚加了一个小例子
-
解决方法:将您的三元
if包装在constexpr函数中。然后调用它来初始化类成员。
标签: c++ constexpr c++17 if-constexpr