Compilation C++/通用委托的CLI编译错误

Compilation C++/通用委托的CLI编译错误,compilation,c++-cli,.net-4.5.2,Compilation,C++ Cli,.net 4.5.2,我目前正在使用C++/CLI进行一些工作,遇到了一个奇怪的编译错误,代码如下: private ref class LinqHelper abstract sealed { public: generic<typename T, typename U> static Func<T, U>^ Cast() { return gcnew Func<T, U>(&LinqHelper::Cast); } privat

我目前正在使用C++/CLI进行一些工作,遇到了一个奇怪的编译错误,代码如下:

private ref class LinqHelper abstract sealed
{
public:
    generic<typename T, typename U> static Func<T, U>^ Cast()
    {
        return gcnew Func<T, U>(&LinqHelper::Cast);
    }

private:
    generic<typename T, typename U> static U Cast(T val)
    {
        return safe_cast<U>(val);
    }
};
private ref类LinqHelper抽象密封
{
公众:
泛型静态函数^Cast()
{
返回gcnew Func(&LinqHelper::Cast);
}
私人:
通用静态U型铸造(T val)
{
返回安全壳(val);
}
};
错误C3352:“强制转换”:指定的函数与委托类型“U(T)”不匹配

更具体地说,有问题的代码行是:

return gcnew Func<T, U>(&LinqHelper::Cast);
返回gcnewfunc(&LinqHelper::Cast);
我无法解释这个错误。我传递给Func委托构造函数的Cast静态成员函数具有所需的签名,即U Cast(T val)

有人能帮我解释一下吗

如果有帮助的话:我正在使用VS 2015,C++/CLI项目正在引用.NET framework v4.5.2


谢谢

编译器对必须为Cast方法推断类型参数感到不高兴。糟糕的错误消息,在C++/CLI中并不少见。修正:

return gcnew Func<T, U>(&LinqHelper::Cast<T, U>);
返回gcnewfunc(&LinqHelper::Cast);