Em uma classe Bherdar de classe A, é possível usar uma usingdeclaração para trazer membros de Adentro B, até mesmo modelos, como este:
struct A {
template <typename T>
void foo();
};
struct B : private A {
using A::foo;
};
Mas isso pode ser feito para modelos de conversão?
struct A {
template <typename T>
operator T();
};
struct B : private A {
using A::operator /* ??? */;
};
Parece não haver maneira de se referir ao modelo pelo nome, mas eu gostaria de ser provado errado ou obter algum esclarecimento.
1
Qual é o caso de uso?
—
R: Sahu
@RSahu Presumivelmente, herdar um construtor de conversão sem exigir herança pública.
—
21419 Ayjay
@ Ayjay, se for esse o caso, o uso da
—
R Sahu
privateherança é mal concebido, IMO.
@RSahu Ayjay está correto. Para ser mais específico, desejo permitir que alguma classe
—
Maçãs
Cseja herdada B, mas Cnão deveria ter acesso aos Amétodos protegidos. No entanto, quero que Aos métodos públicos permaneçam públicos, incluindo esse operador de conversão. Sei que poderia contornar isso de algumas maneiras, mas prefiro evitar escrever código extra para obter tão pouco benefício.
@ Apple, isso parece uma falha de design. Não sei quanto controle você tem sobre essas classes. Se você tem controle sobre o que entra
—
R Sahu
A, pode se separar Aem duas classes - uma que Bpode herdar publice a outra private.