我正在努力理解模板的偏特化概念。然而,我似乎将其与模板特化混淆了。我考虑了以下两个例子:
template <typename T>
struct test
{
///Some stuff
};
template <> //Specialization
struct test<int*>
{
///Some stuff
};
template<typename t> //Partial specialization
struct test<t*>
{
///Some stuff
};
我正在尝试以下内容
test<int*> s;
这将调用专门的模板。如何调用部分特化的类?有人能否举例解释部分特化和专门模板的区别吗?
更新:
阅读了答案后,我意识到部分模板特化仅在需要特化一组参数的子集时有所帮助。因此,我尝试了以下内容:
template <>
struct test<int*>
{
};
//Partial Specialized
template<typename t>
struct test<t, std::string>
{
};
test<int*,std::string> s; //Error : Too many arguments for class template
为什么会这样呢?