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


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

Type: тип, зависящий от параметра универсального типа, не допускается в качестве аргумента для признака встроенного типа компилятора "черта"

Замечания

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

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

Пример

В следующем примере создается C2140.

// C2140.cpp
// compile with: /clr /c
template <class T>

struct is_polymorphic {
   static const bool value = __is_polymorphic(T);
};

class x {};

generic <class T>
ref class C {
   void f() {
      System::Console::WriteLine(__is_polymorphic(T));   // C2140
      System::Console::WriteLine(is_polymorphic<T>::value);   // C2140

      System::Console::WriteLine(__is_polymorphic(x));   // OK
      System::Console::WriteLine(is_polymorphic<x>::value);   // OK
   }
};