У меня есть следующий (свернутый) код, который работал в VC2005, но больше не работает в 2010 году.
template <typename TDataType>
class TSpecWrapper
{
public:
typedef typename TDataType::parent_type index_type;
public:
template <bool THasTriangles>
void Spec(index_type& io_index)
{ std::cout << "False version" << std::endl; }
template <>
void Spec<true>(index_type& io_index)
{ std::cout << "True version" << std::endl; }
};
Кажется, что когда "index_type" является зависимым типом, я всегда получаю C2770: неверный явный аргумент (ы) шаблона ошибка специализации.Обратите внимание, что этого кода на самом деле достаточно для генерации ошибки - для компиляции достаточно пустой main, шаблон даже не нужно создавать.
Он отлично работает, если index_type не является зависимым типом.Любые идеи, почему это так в VC2010, если это на самом деле стандартное поведение или ошибка, и если я могу обойти это?