0
Я хочу, чтобы выбрать шаблон из класса признака, как в следующем:частично специализированный шаблон в качестве типа элемента черта
template<typename T>
class JobTypeA { };
template<typename T>
class JobTypeB { };
template<typename T>
class JobTraits
{
/* nothing */
};
class A { };
template<>
class JobTraits<A>
{
typedef JobTypeA Type;
};
class B {};
template<>
class JobTraits<B>
{
typedef JobTypeB Type;
};
class JobTarget1 { };
class JobTarget2 { };
template<typename T, typename U>
class JobUser
{
public:
typedef typename JobTraits<T>::Type<U> JobType;
void doSomething (void)
{
JobType j;
/*... */
}
};
int
main (void)
{
JobUser<B, JobTarget1> j;
}
выше обыкновение компиляции из-за «ЬурейиЕ неполный тип» в специализированных классов. Я получил эту работу, используя «шаблоны псевдонимов» в std = C++ 11 с g ++ 4.7.2. Однако VS2010 еще не поддерживает его. Есть ли какие-либо обходные пути для достижения того же без «шаблонов псевдонимов».
Это работает. Спасибо :) –