我想实例化一个函数,其中模板参数类似于以下complexType
。
template <class U, class type> struct complexType;
template <class type> struct complexType<double, type>
{
typedef type T;
};
template <class type> struct complexType<int, type>
{
typedef type T;
};
我在头文件中得到以下内容
template <typename U>
void XYZ(
typename complexType<U, double>::T abc);
和cpp文件中的实现
template <typename U>
void XYZ(
typename complexType<U, double>::T abc)
{
abc = 1.0;
}
template
void XYZ(
complexType<double, double>::T abc);
不幸的是,GCC给了我以下编译器错误消息
void XYZ<>
的模板ID XYZ(complexType<double, double>::T)
与任何模板声明
有关如何解决此问题的任何建议吗?
答案 0 :(得分:0)
U
不是由其论点推断出来的。您需要一个明确的模板规范:
template
void XYZ<double>(
complexType<double, double>::T abc);
您也可以这样做:
template void XYZ<double>(double);