template <class T>
struct A {
typedef B type;
}
template<>
struct A<double>
{
typedef double type;
};
template<typename T, typename U>
B<U> func()
{
A<U>::type my_type;
my_type tmp;
}
此代码不能使用g ++编译器编译。错误信息是:
错误:模板参数列表太少
请有人解释一下。
谢谢&amp;问候, 范萨尔
答案 0 :(得分:0)
首先抱歉有问题的错误。正确的问题应该是:
template <class T>
struct A {
typedef B type;
}
template<>
struct A<double>
{
typedef double type;
};
template<typename T, typename U>
void func()
{
typedef A<U>::type my_type;
my_type tmp;
}
这里基本上问题是编译器对语句
感到困惑typedef A<U>::type my_type;
无论是类的数据成员还是类型的数据成员。所以我们必须明确地说它是一种类型。 所以用以下陈述替换上述陈述
typdedef typename A<U>::type my_type;