Wal*_*ldB 32 c++ language-lawyer c++11
C++ 11标准§12.3.2/ 1(强调我的):
甲成员函数具有以下形式的名称没有参数的类X的
conversion-function-id:
operator convert-type-id
conversion-type-id:
type-specifier-seq conversion-declarator
转换声明者:
ptr-operator转换声明器
指定从X到convert-type-id指定的类型的转换.这些功能称为转换功能.不能指定返回类型.如果转换函数是成员函数,则转换函数的类型(8.3.5)是"不返回convert-type-id的参数的函数".
转换函数是否始终是成员函数,或者有些情况不是这样?
Cas*_*sey 47
如果转换函数是成员函数,则将条款添加到N2798中的工作草案中,作为概念措辞的一部分,符合N2773概念的建议措辞.N2798 12.3.2/1读取(我将使用粗体显示添加,并使用删除线显示删除):
1
X没有参数X的类的成员函数,或者其唯一参数是类型的概念的关联函数,具有表单的名称转换功能ID:
operator转换型-ID转换型-ID:
type-specifier-seq 属性说明符opt conversion-declarator opt
转换说明符:
ptr-operator conversion-declarator opt
指定转换
X为convert-type-id指定的类型.这些成员函数称为转换函数.不应在type-specifier-seq中声明类,枚举和typedef-names.既不能指定参数类型也不能指定无返回类型.如果转换函数是一个成员函数,叔Ť他类型的一个所述转换函数(8.3.5)为"函数不采取任何参数返回转换型-ID " ; 如果转换函数是关联函数,则转换函数的类型是"函数采用X返回转换类型id的类型的参数".转换函数永远不会用于转换...
在N2960草案中删除了概念措辞."如果转换函数是成员函数",那么当时也应该被删除,因为它现在已经被删除了.N2960§12.3.2/ 1的相关部分:
1
X没有参数的类的成员函数,或者唯一参数是X类型的概念的关联函数,带有表单的名称转换功能ID:
operator转换型-ID转换型-ID:
type-specifier-seq属性说明符opt conversion-declarator opt
转换说明符:
ptr-operator conversion-declarator opt
指定转换
X为convert-type-id指定的类型.这些功能称为转换功能.不能指定返回类型.如果转换函数是成员函数,则转换函数的类型(8.3.5)是"不返回convert-type-id的参数的函数"; 如果转换函数是关联函数,则转换函数的类型是"函数采用....X返回转换类型id的类型的参数"
2018-02-03更新:这已在C++ 17中修复
在确定1990年CWG问题时, CWG将此措辞更正为一个驱动器.
| 归档时间: |
|
| 查看次数: |
1786 次 |
| 最近记录: |