C++ 中 { } -> “运算符”的含义

问题描述 投票:0回答:1

我在 C++ 方面的活动已经休眠了一段时间,所以也许我的问题不合适。

我在概念的定义中看到了“奇怪”的语法,例如:

{x + 1} -> std::same_as<int>;

{ } ->
“操作员”有名字吗?它是什么时候被引入到标准中的?目的是什么?
我理解其在定义需求的背景下的含义,但希望获得一些进一步的信息。

c++ syntax requirements
1个回答
0
投票

C++ 中 { } -> “运算符”的含义

它被称为复合要求,其形式为:

{ expression } noexcept(optional) return-type-requirement (optional) ;    

return-type-requirement   -   -> type-constraint

断言命名表达式的属性。 替换和语义约束检查按以下顺序进行:

  1. 模板参数(如果有)被替换为表达式;
  2. 如果使用 noexcept,则表达式不得潜在抛出;
  3. 如果存在返回类型要求,则: a) 模板参数被替换为返回类型要求; b)
    decltype((expression))
    必须满足类型约束所施加的约束。否则,封闭的需求表达式为 false。

这意味着

x+1
中的
{x+1}
是一个表达式,而
std::same_as<int>
是返回类型要求,在您的示例中这意味着由表达式“x+1”推导的类型应计算为
int

© www.soinside.com 2019 - 2024. All rights reserved.