В основном это то, что я хотел бы сделать:
struct A {
enum E {
X, Y, Z
};
};
template <class T>
struct B {
using T::E;
};
// basically "import" the A::E enum into B.
std::cout << B<A>::X << std::endl;
Причина в том, что я хочу в основном внедрить детали реализации в мой шаблонный класс. В то же время перечисление «модели» отражает информацию, которую я хочу, чтобы пользователь мог иметь для конкретной реализации шаблона. Возможно ли это?
Я знаю, что могу иметь B
наследовать от A
, но я думаю, что это не идеальное решение, потому что я хочу иметь возможность добавлять новые "модели", не меняя кишки B
.
РЕДАКТИРОВАТЬ: Теперь, когда я об этом, наследство не обязательно должно быть исключено. Возможно, следующее идеально:
struct A {
enum E {
X, Y, Z
};
};
template <class T>
struct B : A {
};
int main() {
std::cout << B<A>::X << std::endl;
}