Use typedef / using da classe base modelada na classe derivada

Ao acessar umusing a partir de uma classe base com uma classe base modelada, eu me deparo com um problema com verbosidade, se nada mais. No código abaixo, a classe derivada tenta usar omy_type da sua classe base.

template <typename T>
class Base {
    public:
        using mytype = T;
};

template <typename T>
class Derived : public Base<T>{
    public:
        // using the base's mytype here
        static typename Base<T>::mytype func() { return 0;}
};

No entanto, na prática, estou achando que isso é um monte de personagens para o que parece ser mais simples. se a classe Base não fosse modelada, não exigiria a<T> ou o nome do tipo (obviamente).

No meu problema real, tenho uma grande quantidade de classes derivadas da base e quero simplificar isso, se possível. O que eu tenho no momento é como o próximo exemplo, onde eu estou apenas adicionando um adicionalusing para obter o tipo da classe base, mas parece uma camada extra que eu não deveria precisar.

template <typename T>
class Derived : public Base<T>{
    public:
        using base_type = typename Base<T>::mytype;
        static base_type func() { return 0;}
};

isso pode parecer um assunto bobo, mas o número de vezes que a classe basemytype é usado nas classes derivadas torna muito hediondo no primeiro caso. Tem algumacerto maneira de obter os tipos fora da base de modelo que mantém a legibilidade?

questionAnswers(2)

yourAnswerToTheQuestion