Kry*_*n S 16 c++ language-lawyer
除非删除函数,否则在函数定义的上下文中,函数定义的参数类型或返回类型不应为不完整或抽象的(可能具有cv限定)类类型。
和[class.mem] P7状态:
}在class-specifier结束时, 类被视为完全定义的对象类型(或完整类型)。该类在其完整类上下文中被视为完整类;否则,在其自身的类成员规范内,它被视为不完整。
给出以下代码:
struct S
{
// S is incomplete
S f() { /* S is complete in a function body */ return S(); }
// S is incomplete
};
// S is complete
Run Code Online (Sandbox Code Playgroud)
一个完整的类方面值得注意的是不包括函数定义的decl说明符-SEQ,也不包括该函数的声明符,然而,每一个编译器说,这是确定的。用什么措辞可以做到这一点,因为我找不到它?
引用链接中的第一项:
一个类的完整类上下文是
- 函数体([dcl.fct.def.general]),
所以在任何方法的函数体中都被认为是一个完整的类上下文。据我所知,“函数定义的上下文”与函数体是同义词——而不是函数声明的上下文,其中不需要完整的返回类型。
| 归档时间: |
|
| 查看次数: |
177 次 |
| 最近记录: |