5

VS10 と armcc4.1 [ビルド 561] の両方で、次のコードのコンパイルをテストしました。関数 depth1() と depth2() の両方が VS でコンパイルされますが、armcc は depth1() のみをコンパイルし、depth2() に対してエラー 304 (引数リストに一致するインスタンスはありません) を返します。foo と bar が静的でない場合、armcc でも問題なくコンパイルされます。

理由を理解していただければ幸いです。

template <class T>
static T foo(T arg)
{
   return arg*5;
}

template <class T>
static T bar(T arg)
{
   return foo<T>(arg);
}

void depth2()
{
   int i = 12;
   i = bar<int>(i);
}

void depth1()
{
   int i = 12;
   i = foo<int>(i);
}
4

1 に答える 1