请看下面内容:
考虑以下事项:
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
,这两个都是模糊的?
operator int
和operator int&
也是有歧义的。 - TemplateRexint const&
无法符合条件。 - jaggedSpirea
是不明确的,而c
不是。 - Barry