约束自动施法是否有效?

Is constrained auto cast valid?

自 C++20 起,约束 auto 由以下各项引入:

Concept auto identifier = init

这意味着,例如:

std::integral auto x = 10;

有效。

此外,对于新表达式,允许概念与 auto:

配对
new Concept auto { expr };
// or:
new Concept auto ( expr );

auto{expr}auto(expr) 在 C++23 中引入,大致等同于:

auto __temp { expr };
return __temp;

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

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

[dcl.spec.auto.general]/5 仅允许 auto 成为函数类型转换的 simple-type-specifier,即使约束 placeholder-type-specifier 在语法上可以是 simple-type-specifier