FLIF图像库具有以下定义:
template bool flif_decode(FileIO& io, Images &images,
callback_t callback, void *user_data, int, Images &partial_images,
flif_options &, metadata_options &, FLIF_INFO* info);
我看过模板专业化,但是仍然有尖括号。 这是什么意思?
答案 0 :(得分:3)
编译器通常能够在显式模板实例化中推断出模板参数,这就是事实。
请参阅[temp.explicit](排泄物矿)
如果显式实例化是针对函数或成员函数的,则 声明中的 unqualified-id 应该是 template-id ,或者是可以推导出所有模板参数的 , 模板名称或操作员功能ID 。
标准提供了以下示例:
template void sort(Array<char>&); // argument is deduced here
在您的示例中,函数声明(也是一个定义)如下所示:
template <typename IO>
bool flif_decode(IO& io, /*etc*/) { /*...*/}
因此,当我们稍后看到这样的显式实例时:
template bool flif_decode(FileIO& io, /*etc*/);
编译器可以推断出FileIO
是您希望用于typename IO
的类型