考虑以下:
struct X {
template <class T> operator T(); // #1
template <class T> operator T&(); // #2
};
int a = X{}; // error: ambiguous
int& b = X{}; // calls #2
int const& c = X{}; // calls #2
情况b
很简单,#2
是唯一可行的人选。什么规则表明对 的初始化#2
是首选的,但两者对于 的初始化是模棱两可的?#1
int const&
int