约束自动投射有效吗?

Des*_*old 5 c++ auto c++-concepts c++23

从 C++20 开始,约束auto是通过以下方式引入的:

Concept auto identifier = init
Run Code Online (Sandbox Code Playgroud)

这意味着,例如:

std::integral auto x = 10;
Run Code Online (Sandbox Code Playgroud)

已验证。

此外,对于新表达式,概念可以与 配对auto

new Concept auto { expr };
// or:
new Concept auto ( expr );
Run Code Online (Sandbox Code Playgroud)

auto{expr}orauto(expr)在 C++23 中引入,大致相当于:

auto __temp { expr };
return __temp;
Run Code Online (Sandbox Code Playgroud)

这是否意味着Concept auto { expr }或者Concept auto ( expr )也有效?

这个简单的用例可用于尝试创建衰减副本,同时检查其按约束检查的操作。

Dav*_*ing 5

[dcl.spec.auto.general]/5只允许auto作为函数类型转换的简单类型说明符,即使受约束的占位符类型说明符在语法上可以是简单类型说明符