Ошибка компилятора C2921
переопределение: class: шаблон класса или универсальный тип повторно объявляется как type
Универсальный или шаблонный класс имеет несколько объявлений, которые не эквивалентны. Чтобы устранить эту ошибку, используйте разные имена для различных типов или удалите переопределение имени типа.
Следующий пример приводит к возникновению ошибки C2921:
// C2921.cpp
// compile with: /c
template <class T> struct TC2 {};
typedef int TC2; // C2921
// try the following line instead
// typedef struct TC2<int> x; // OK - declare a template instance
Ошибка C2921 также может возникнуть при использовании универсальных шаблонов.
// C2921b.cpp
// compile with: /clr /c
generic <class T> ref struct GC2 {};
typedef int GC2; // C2921
// try the following line instead
// typedef ref struct GC2<int> x;