嵌套模板依赖typedef和参数类型推导

时间:2012-01-13 12:43:55

标签: c++ templates gcc g++ typedef

  

可能重复:
  C++, template argument can not be deduced

我有以下代码:

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类型的别名吗?

0 个答案:

没有答案