[英]If statements on compile-time const value
我想让代码包含在基于编译时常量值的函数中,但是static_if不是C ++中的构造。
所以我可以这样写函数
class TA {
public:
template<bool flag>
void func() {
if(flag)
a++;
}
int a;
};
int main() {
TA a;
a.func<true>();
a.func<false>();
}
而且我想保证编译器具有两个功能。 一种是将“ if(flag)a ++”编译到函数中,另一种则不是。
是否有可能基于C ++ 17标准获得此保证,还是由编译器供应商摆布?
谢谢。
实际上,C ++ 17确实包含了您所要询问的内容,即if constexpr
。
您可以在编译时可以评估条件的任何地方使用它(例如模板实例化):
class TA {
public:
template<bool flag>
void func() {
if constexpr (flag)
a++;
}
int a;
};
但是,正如其他人所说,在此示例中,您不太可能获得太多收益,因为编译器通常可以优化此类内容。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.