在以下示例中:
class A
{
public:
class B
{
...
}
B Method(B argument);
}
A::B A::Method(B argument);
Run Code Online (Sandbox Code Playgroud)
为什么返回类型需要范围,而不是参数类型?
根据[basic.lookup.qual]/3,
在声明中,该声明符-ID是一个合格的-ID,在之前使用的名称合格-ID被宣布在定义命名空间范围中查找; 在成员的类或命名空间的范围内查找qualified-id后面的名称.
返回类型在声明qualified-id之前(即,A::Method
),而参数类型在它之后,因此参数类型的名称会在范围内自动查找A
,而返回类型的名称则不会.我们可以使用尾随返回类型来避免额外限定.
auto A::Method(B argument) -> B;
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
153 次 |
最近记录: |