I specialize a template by enum

```
template<>
class specialized_class<user_option=CHOICE_ENUM::CHOSEN_OPTION>
{

public:

    typedef second_class<user_option> obj_type;

```

Here, to define `second_class`, I need to know, what type user has selected. I need to name the chosen option. However the second line of my code is an illegal syntax. How to do what I need?

Even though

```
    typedef second_class<CHOICE_ENUM::CHOSEN_OPTION> obj_type;

```

solves the problem. I prefer to avoid this way, since it is using a magic type, and the code inside the class needs modification for using somewhere else.