Compiler Error C3228

'function' : generic type argument for 'param' cannot be 'type', it must be a valuetype or handle type

An incorrect type was passed as a generic type argument.

The following sample generates C3228:

// C3228.cpp
// compile with: /clr
class A {};

value class B {};

generic <class T>
void Test() {}

ref class C {
public:
   generic <class T>
   static void f() {}
};

int main() {
   C::f<A>();   // C3228
   C::f<B>();   // OK

   Test<C>();   // C3228
   Test<C ^>();   // OK
}