【发布时间】:2012-03-28 11:58:26
【问题描述】:
#include <iostream>
using namespace std;
struct Y;
struct X
{
X(const Y&) { cout << "converting constructor" << endl; }
};
struct Y
{
operator X() { cout << "conversion function" << endl; }
};
void f(X x) {}
int main()
{
Y y;
f(y);
}
在上面的 conversion function 由我的编译器(gcc 4.6.1)优先于 converting constructor,但是在标准中它指出: p>
用户定义的转换仅适用于明确的地方
在这种情况下似乎存在歧义。谁能解释一下这个矛盾?
我原以为以上内容无法编译。我也很确定几年前 Scott Meyers 写过这个具体的例子,并说它不会编译。我错过了什么?
【问题讨论】:
标签: c++ c++11 copy-constructor implicit-conversion language-lawyer