I do not understand p.#7 of the section "13.6.2 Member templates".

There is written

7 A using-declaration in a derived class cannot refer to a specialization of a conversion function template in a base class.

Consider the following example

#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?


With best regards,
Vlad from Moscow

You can meet me at http://cpp.forum24.ru/ or www.stackoverflow.com or http://ru.stackoverflow.com