我对N3797::8.5.3/5 [dcl.init.ref]中的措辞有疑问
类型“cv1 T1”的引用由“cv2 T2”类型的表达式初始化,如下所示: -如果引用是lvalue引用和初始值表达式
第二种情况是否意味着初始化器表达式是class-type和lvalue
发布于 2014-11-13 16:06:40
该条款规定:
有一个类类型
所以它必须是一个类类型。但是,文档中的示例显示,它不必是一个lvalue,以我们所具有的代码示例的选定部分为例:
struct A { };
struct B : A { operator int&(); } b;
int& ir = B(); // ir refers to the result of B::operator int&B()不是一个值,但正如8.5.3/5所说:
可以转换为“cv3 T3”类型的lvalue,其中“cv1 T1”与“cv3 T3”兼容。
在这种情况下也适用。
https://stackoverflow.com/questions/26901376
复制相似问题