此示例代码生成expected a class template, got std::pair <_T1, _T2>
。我尝试使用struct Struct <std::pair> {};
,但参数T
和M
变得无法使用。怎么避免这个?
template <template <class...> class>
struct Struct {};
template <class T, class M>
struct Struct <std::pair <T, M>> {};
答案 0 :(得分:2)
根据您的需要
template <template <class...> class>
struct Struct {};
template <>
struct Struct <std::pair>
{
// Specialization
};
或
template <typename> struct Struct {};
template <typename First, typename Second>
struct Struct <std::pair<First, Second>>
{
// Specialization
};
答案 1 :(得分:1)
这不是您模板的有效专业化。
之所以如此,是因为std::pair
是类模板{{1}}的完全特化,因此是一个类。您的模板需要一个类模板参数,这正是编译器告诉您的。