(のMicrosoft Visual C++ 2005のExpressの)コードのこの作品コンパイル:タイプxからタイプxに変換できませんか?
'=': cannot convert from 'A (__cdecl *)(void)' to 'A (__cdecl *)(void)'
私には意味がありません。
struct A
{
template< typename T > static A Foo(void) { return A(); }
struct S
{
template< typename T > static S GetInstance(void)
{
S Result;
Result.m_funcFoo = &A::Foo<T>;
return Result;
}
A (*m_funcFoo)(void);
};
};
int main(int argc, char* argv[])
{
A::S::GetInstance<int>();
}
私はC2440エラーが発生します。エラーテキストに指定された2つのタイプは明らかに同じです。 また、Foo
の戻り値をint
に変更すると、そのようなエラーはありません。
これはバグですか、何か間違っていますか?
編集: だから、これはバグだと誰かがこれを解決する方法を知っていますか?たぶんキャストを使用することによって?私はこのコードをコンパイルする必要があります...
これはバグ![....] –
最初は、A(*(void))*はA(A :: *)(void)とは違うので、そのようにはできませんでした。 – Griwes