让我们说像我这样有一个constexpr:
constexpr int i = 42;
但到目前为止,我的程序没有任何i
可以在编译时使用的情况,所以它相当无用。但是在将来,如果我想在编译时上下文中使用i
,我不必回溯并添加constexpr
。这可能就像const正确性一样,你把const放在正确的位置并且第一次就得到#34;还是只是不必要?制作一切constexpr有什么负面的弊端?
答案 0 :(得分:0)
将事物标记为constexpr
的唯一缺点与首先使用constexpr
的缺点是一致的。
我想到的两个最大的缺点是你失去了编译器的可移植性(VC ++在支持constexpr
方面已经很晚了)你不能在constexpr
中使用“非平凡”对象{1}},例如std::string
,即使您可以制作const
。
除此之外,在代码中使用constexpr
而不是代码的大小没有特别的代价。如果您认为使用constexpr
限定命名常量可能有用,请务必继续。这比使用预处理器常量更好。