Si quiero utilizar un miembro de una clase base de la plantilla a partir de una clase de plantilla derivada, tengo que ponerla en alcance como tal:C++ utilizando comunicado en su alcance función miembro
template <typename T>
struct base
{
void foo();
};
template <typename T>
struct derived : base<T>
{
using base<T>::foo;
};
Por qué no puedo coloque esta instrucción using en un ámbito local, como otras instrucciones using?
template <typename T>
struct base
{
void foo();
};
template <typename T>
struct derived : base<T>
{
void f()
{
using base<T>::foo; // ERROR: base<T> is not a namespace
}
};
¿Qué problema está tratando de resolver al hacer esto? ¿Estás tratando de evitar el prefijo 'foo' con' this-> '? –
Al usar la declaración de uso, evito el prefijo 'foo' con' this-> ', yes. Al colocarlo en un ámbito local, estoy tratando de contaminar el alcance derivado solo cuando sea necesario. – HighCommander4