C++ 对部分专门化使用的不完整类型无效
为什么我会在以下情况中出现此错误:C++ 对部分专门化使用的不完整类型无效,c++,templates,C++,Templates,为什么我会在以下情况中出现此错误: template<typename T,typename Y> class MyContainer { std::vector<T> list; public: void append( T&& elem) ; }; template<typename T> void MyContainer<T,int>::append(T&& elem) {
template<typename T,typename Y>
class MyContainer
{
std::vector<T> list;
public:
void append( T&& elem) ;
};
template<typename T>
void MyContainer<T,int>::append(T&& elem)
{
list.push_back(elem);
}
int main()
{
}
不能只对一个成员函数进行部分专门化。你必须部分地专门化整个班级;该专门化将定义自己的成员函数,这些函数可能与主模板中的函数匹配,也可能与主模板中的函数不匹配。这是否回答了您的问题?或者不,这个问题的答案我不清楚,我不能就他的问题提问,因此在这里单独提问。@anurag86到底什么是不清楚的?正如IgorTandetnik的回答和评论所说,如果不对整个类进行部分专门化,就无法为类模板的成员函数定义部分专门化。还有更多答案相似的重复项,例如,每个问题的链接问题中都有更多的重复项。我不清楚他提供的
模板结构嵌套
。是的,我也在浏览其他帖子,运气不好。再看一遍
template<typename T, typename Y>
void MyContainer<T,Y>::append(T&& elem)
{
list.push_back(elem);
}