Compartilhar via


Erro do compilador C2179

'type': um argumento de atributo não pode usar parâmetros de tipo

Um parâmetro de tipo genérico é resolvido em runtime. No entanto, um parâmetro de atributo deve ser resolvido em tempo de compilação. Portanto, você não pode usar um parâmetro de tipo genérico como um argumento para um atributo.

Exemplo

O exemplo a seguir gera o erro C2179.

// C2179.cpp
// compile with: /clr
using namespace System;

public ref struct Attr : Attribute {
   Attr(Type ^ a) {
      x = a;
   }

   Type ^ x;
};

ref struct G {};

generic<typename T>
public ref class Z {
public:
   Type ^ d;
   [Attr(T::typeid)]   // C2179
   // try the following line instead
   // [Attr(G::typeid)]
   T t;
};