我在 C++ 方面的活动已经休眠了一段时间,所以也许我的问题不合适。
我在概念的定义中看到了“奇怪”的语法,例如:
{x + 1} -> std::same_as<int>;
{ } ->
“操作员”有名字吗?它是什么时候被引入到标准中的?目的是什么?C++ 中 { } -> “运算符”的含义
它被称为复合要求,其形式为:
{ expression } noexcept(optional) return-type-requirement (optional) ; return-type-requirement - -> type-constraint
和 断言命名表达式的属性。 替换和语义约束检查按以下顺序进行:
- 模板参数(如果有)被替换为表达式;
- 如果使用 noexcept,则表达式不得潜在抛出;
- 如果存在返回类型要求,则: a) 模板参数被替换为返回类型要求; b)
必须满足类型约束所施加的约束。否则,封闭的需求表达式为 false。decltype((expression))
这意味着
x+1
中的 {x+1}
是一个表达式,而 std::same_as<int>
是返回类型要求,在您的示例中这意味着由表达式“x+1”推导的类型应计算为 int
。