Поделиться через


Ошибка компилятора C2992

"класс": список параметров типов недопустим или отсутствует

Классу предшествует ключевое слово template или generic с отсутствующими или недопустимыми параметрами.

Пример

При компиляции следующего примера возникнет ошибка C2992:

// C2992.cpp
// compile with: /c
template <class T>
struct Outer {
   template <class U>
   struct Inner;
};

template <class T>   // C2992
struct Outer<T>::Inner {};

template <class T>
template <class U>   // OK
struct Outer<T>::Inner {};

C2992 также может возникать при использовании универсальных шаблонов:

// C2992b.cpp
// compile with: /c /clr
generic <class T>
ref struct Outer {
   generic <class U>
   ref struct Inner;
};

generic <class T>   // C2992
ref struct Outer<T>::Inner {};

generic <class T>
generic <class U>   // OK
ref struct Outer<T>::Inner {};