#include <iostream>
struct A
{
int x = 0;
template <typename T>
operator T *() const { std::cout << "operator T *()\n"; return ( T * )&x; }
};
template <>
A::operator int *() const { std::cout << "operator int *()\n"; return ( int * )&x; }
struct B : A
{
using A::operator int *;
};
int main()
{
B b;
std::cout << b.operator int *() << '\n';
}
Does not the using declaration using A::operator int *; refer to a specialization of the template conversion operator because there is used the qualified name A::operator int * does it?