考虑这个例子:
struct B { operator int(); };
template<class T>
struct X:B
{
using B::operator T;
};
GCC接受代码,而Clang和 MSVC 拒绝它。哪个是对的?
请注意,如果基类型是依赖的,则所有编译器都接受以下代码:
template<class T>
struct B { operator T(); };
template<class T>
struct X:B<T>
{
using B<T>::operator T;
};