gpt4 book ai didi

c++ - constexpr if with initializer 由标准保证吗? 'constexpr(constexpr auto x = f(); x) { }'

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:26:44 27 4
gpt4 key购买 nike

我找不到任何关于新 C++17 if 初始化语法的信息和“constexpr if”在:

http://open-std.org/JTC1/SC22/WG21/docs/papers/2016/p0128r1.html

不过,Clang-HEAD 支持该语法...

constexpr auto f() { return true; }
int main() {
if constexpr(constexpr auto x = f(); x) { }
}

在线代码在这里 -> http://melpon.org/wandbox/permlink/dj3a9ChvjhlNc8nr

constexpr if带有标准保证的初始值设定项,如 constexpr if只是一个“ifconstexpr ”,还是不能保证必须明确添加到标准中?

最佳答案

Selection statements with initializer提案提到 if constexpr,并声明“if constexpr 的功能与此提案中的扩展 if 语句一样好”。

N4606 中关于带初始化器的if 语句的规范[stmt.if]p3 明确允许使用 if constexpr

这是 N4606 [stmt.if]p3 所说的:

An if statement of the form

if constexpr[opt] ( init-statement condition ) statement

is equivalent to

{
init-statement
if constexpr[opt] ( condition ) statement
}

and an if statement of the form

if constexpr[opt] ( init-statement condition ) statement else statement

is equivalent to

{
init-statement
if constexpr[opt] ( condition ) statement else statement
}

except that names declared in the init-statement are in the same declarative region as those declared in the condition.

关于c++ - constexpr if with initializer 由标准保证吗? 'constexpr(constexpr auto x = f(); x) { }',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38655326/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com