我已经在 VS10 和 armcc4.1 [Build 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);
}