Generics 泛型类中的编译器错误c1001

Generics 泛型类中的编译器错误c1001,generics,compiler-errors,c++-cli,Generics,Compiler Errors,C++ Cli,在我班上 generic <class T> public ref class CFifo { public: enum class EnumResult { ... } EnumResult AddData (int i_iStart, int i_iLength, array<T>^ i_aData); ... } 类CResult是另一个通用类: generic <class TResult> where TResult : va

在我班上

generic <class T>  
public ref class CFifo
{
public:
  enum class EnumResult
  { ... }

  EnumResult AddData (int i_iStart, int i_iLength, array<T>^ i_aData);
  ...
}
CResult
是另一个通用类:

generic <class TResult> where TResult : value class  // value class constraint is not necessary
public ref class CResult abstract sealed
generic其中TResult:value-class//value-class约束不是必需的
公共参考类结果摘要密封
我在其他类中使用相同的行
CResult::TraceMsg
,没有问题

我可以创建和使用
EnumResult
的变量而不会出错,因此我认为将此类型传递给泛型类
CResult
也应该可以

有人能解释编译器崩溃的原因吗?如果可能的话,如何修复它?谢谢

发现故障:

这是
generic ref class CResult
中的
value class
约束
我一删除它,编译器崩溃就消失了。奇怪

我不得不在
CResult
中修改代码:

returnstatic\u cast(iResult);

returnstatic_cast(System::Enum::ToObject(TResult::typeid,iResult));
因为我不再能够直接从
int
转换到
TResult
,这在以前是可能的,因为
值类
约束

generic <class TResult> where TResult : value class  // value class constraint is not necessary
public ref class CResult abstract sealed
return static_cast<TResult>(iResult);
return static_cast<TResult>(System::Enum::ToObject (TResult::typeid, iResult));