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


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

"type": неопределенный класс не допускается в качестве аргумента для признака встроенного типа компилятора "признака"

Недопустимый аргумент был передан в признак типа.

Замечания

Дополнительные сведения см. в статье Compiler Support for Type Traits (C++/CLI and C++/CX) (Поддержка признаков типов компилятором (C++/CLI и C++/CX)).

Пример

Следующий пример приводит к возникновению ошибки C2139.

// C2139.cpp
// compile with: /EHsc
#include <iostream>
using namespace std;

template <class T>
struct is_polymorphic {
   static const bool value = __is_polymorphic(T);
};

class C;
class D {};

class E {
public:
   virtual void Test() {}
};

int main() {
   cout << is_polymorphic<C>::value << endl;   // C2139
   cout << is_polymorphic<D>::value << endl;   // OK
   cout << is_polymorphic<E>::value << endl;   // OK
}