我注意到使用以下代码在Clang和GCC之间的行为有所不同:
class convertible {
public:
operator int() { return 1; }
template <typename T>
operator T() { return 1; }
};
int main () {
convertible x;
switch (x) {} // Clang: OK GCC: Compile error
return 0;
}
GCC返回error: default type conversion can't deduce template argument for ‘template<class T> convertible::operator T()’
Clang编译代码没有错误并调用operator int()
我正在使用Clang 6和GCC8。两者都使用std = c ++ 11
在这种情况下哪个编译器是正确的?