And*_*zos 73 c++ language-lawyer c++11
在C++ 5.1.1/3 [expr.prim.general]中,它说:
类型和值类别[of
this
]在静态成员函数中定义.
这是什么意思?它有什么关系?
注意:
this
不应出现在静态成员函数的声明中
eca*_*mur 78
标准中的语言可以追溯到n3282,这是缺陷1207和1017的分辨率.尤其是语言出现在拟议的决议对缺陷1207,因而应在标准的范围内,因为它站在该缺陷被解决的时间来考虑.当时使用*this
(9.3.1p3)将id表达式重写为成员访问表达式存在一些担忧,特别是在trailing-return-type声明的上下文中(参见问题945).
如果我们将提出的解决方案与缺陷1207与n3282中的最终语言以及随后的标准进行比较,则与9.3.1p3存在一个显着差异:
当一个id-expression(5.1 [expr.prim])不属于类成员访问语法(5.2.5 [expr.ref])而不用于形成指向成员的指针(5.3.1 [expr.unary] .op])用于声明类的成员函数
X
,如果名称查找(3.4 [basic.lookup])解析名称...
当一个id-expression(5.1 [expr.prim])不属于类成员访问语法(5.2.5 [expr.ref])而不用于形成指向成员的指针(5.3.1 [expr.unary] .op])用于可以使用的上下文中的类成员(5.1.1 [expr.prim.general])
X
this
,如果名称查找(3.4 [basic.lookup])解析名称[...]
很明显,提出的缺陷1207的解决方案认为静态成员函数中的id表达式(对于静态成员)需要转换为*this
成员访问表达式,因此需要访问类型和值类别this
.到编写n3282时,已经解决了有利于不需要的限定id转换(也是9.3.1p3)this
,但5.1.1p3中的语言仍然存在.
我建议在C++标准讨论新闻组中提出这个问题; 有可能在编辑上删除残留语言.