C++ if constexpr 使用 constexpr bool 相当于普通 if?

问题描述 投票:0回答:1

考虑到正在检查的条件变量已标记为

constexpr
,以下代码片段在功能上是否等效?

此外,这是

if constexpr
的正确用法还是它在模板化上下文中的预期应用。

constexpr bool kOn = false;

// Snippet 1
if (kOn) { return true; }

// Snippet 2
if constexpr (kOn) { return true; }
c++ if-statement constexpr if-constexpr
1个回答
-1
投票

不,两个

if
不等价。

第一个在运行时评估,其两个分支中的代码必须在编译时格式良好。

第二个是在编译时评估的,其未使用分支中的代码可能格式错误,因为其死代码会被编译器删除。

if constexpr
不依赖于模板。

© www.soinside.com 2019 - 2024. All rights reserved.