【发布时间】:2021-09-21 14:23:44
【问题描述】:
即使有很多关于这个话题的问题,我的问题也越来越多。我认为问题在于理解某些单词的含义。以下所有引用均来自Cppreference
- 以下文字中的“丢弃”是什么意思?我将“丢弃”理解为从未编译/触摸过的东西,无论它是什么(例如可能是错误的随机字符),它都不会干扰程序的其余部分。
在 constexpr if 语句中,条件的值必须是 上下文转换的 bool 类型常量表达式(直到 C++23) 上下文转换为 bool 的表达式,其中 转换是一个常量表达式 (C++23 起)。如果值为 true,则 statement-false 被丢弃(如果存在),否则, statement-true 被丢弃。
- “实例化”是什么意思?
如果 constexpr if 语句出现在模板化实体中,并且 if 实例化后条件不依赖于值,丢弃的 当封闭模板为 实例化。
- “已检查”是什么意思?我了解“已检查”表示代码已完全编译并验证了当时是否存在任何可能的错误。
在模板之外,完全检查丢弃的语句。如果 constexpr 不能替代 #if 预处理指令:
【问题讨论】:
-
Discarded:跳过,忽略,就好像它不存在一样。
-
实例化:在模板上下文中使用。表示使用给定的具体模板参数“体现”(实际上是定义)模板。
-
@YvesDaoust:比这更复杂,如第 2 点和第 3 点所述。“discarded” 确实误导了 IMO。
-
检查:无论如何它必须是一个有效的声明。 (即使它可以被丢弃。)
-
事实上,第1点区分了两个块并name不满足条件的语句/分支,然后给它一些“属性”。
标签: c++ if-statement