Рассмотрим следующее:
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?