Проблема первоначально возникла в этом вопросе. Рассмотрим следующий код:
class Var
{
public:
    operator int () const
    { return 0; }
    template <typename T>
    operator T () const
    { return T(); }
};
int main()
{
    Var v;
    switch (v)
    { }
}
Без operator int() const { return 0; } оба g++ и clang отклонят код.
Однако приведенный выше код с operator int() является принят клавишей, но отклонено g++ со следующей ошибкой:
main.cpp:17:14: error: default type conversion can't deduce template argument for 'template<class T> Var::operator T() const'
     switch (v)
              ^
Какой компилятор прав?