我有以下代码:
template<typename T>
struct A { };
template<typename T>
struct B
{
typedef A<T> NestedA;
};
template<typename T>
void f(typename B<T>::NestedA a) { }
void g()
{
B<int>::NestedA a;
f(a); //g++ error: no matching function for call to ‘f(A<int>&)’
}
为什么g ++ 4.4.3会在这里抱怨?为什么它不能推断出a
的类型?它甚至不是嵌套类型,而是嵌套的typedef。毕竟不是typedef类型的别名吗?