And*_*zos 6 c++ copy-constructor language-lawyer implicit-conversion c++11
#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);
}
Run Code Online (Sandbox Code Playgroud)
在上面,转换函数由我的编译器(gcc 4.6.1)优先于转换构造函数,但是在标准中它声明:
用户定义的转换仅在明确无误的情况下应用
在这种情况下似乎存在歧义.任何人都可以解释这个矛盾吗?
我原本以为不能编译.几年前我也非常肯定Scott Meyers写了这个具体的例子,并说它不会编译.我错过了什么?
| 归档时间: |
|
| 查看次数: |
544 次 |
| 最近记录: |