Я специализируюсь шаблон на перечислениеИспользование специализированного шаблона и имя опции перечислимую
template<>
class specialized_class<user_option=CHOICE_ENUM::CHOSEN_OPTION>
{
public:
typedef second_class<user_option> obj_type;
Здесь, чтобы определить second_class
, мне нужно знать, какой пользователь выбрал тип. Мне нужно указать выбранный вариант. Однако вторая строка моего кода является незаконным синтаксисом. Как делать то, что мне нужно?
Даже если
typedef second_class<CHOICE_ENUM::CHOSEN_OPTION> obj_type;
решает эту проблему. Я предпочитаю избегать этого, так как он использует магический тип, а код внутри класса нуждается в модификации для использования где-то еще.
вы можете указать CHOICE_ENUM :: CHOSEN_OPTION во второй строке, так как вы знаете, что вы специализируетесь на CHOICE_ENUM :: CHOSEN_OPTION – ProgramCpp
Спасибо, но это был бы волшебный тип. Я предпочитаю избегать этого. – ar2015
@ ar2015 Это не _magic_. Было бы волшебным, если бы не было понятно, почему это значение, которое должно/должно использоваться, но в этом случае это единственное возможное значение, потому что это тип шаблона, который вы явно использовали для выполнения специализации. –