C++ C+中的模板参数+; #包括 #包括 #包括 使用名称空间std; #包括 #包括 #包括 使用名称空间std; //模板参数必须是 //做一个班级;无法使用typename: 样板 作废打印2(C&C){ 复制(c.开始(),c.结束(), ostream_迭代器(cout,“”); cout

C++ C+中的模板参数+; #包括 #包括 #包括 使用名称空间std; #包括 #包括 #包括 使用名称空间std; //模板参数必须是 //做一个班级;无法使用typename: 样板 作废打印2(C&C){ 复制(c.开始(),c.结束(), ostream_迭代器(cout,“”); cout,c++,C++,这是因为std::vector不是单个参数模板。标准要求std::vector使用元素类型和分配器类型参数 如果你不是在传统C++上,可以使用变量模板,你可以声明你的函数如下: note: candidate template ignored: substitution failure [with T = std::__1::basic_string<char>]: template template argument has different template pa

这是因为
std::vector
不是单个参数模板。标准要求
std::vector
使用元素类型和分配器类型参数

如果你不是在传统C++上,可以使用变量模板,你可以声明你的函数如下:

 note: candidate template ignored: substitution failure [with T = std::__1::basic_string<char>]: template template argument has
      different template parameters than its corresponding template template parameter

   void print2(C<T>& c) {
         ^
    1 error generated.
模板
无效打印2(C&C);

这是因为
std::vector
不是单个参数模板。标准要求
std::vector
使用元素类型和分配器类型参数

如果你不是在传统C++上,可以使用变量模板,你可以声明你的函数如下:

 note: candidate template ignored: substitution failure [with T = std::__1::basic_string<char>]: template template argument has
      different template parameters than its corresponding template template parameter

   void print2(C<T>& c) {
         ^
    1 error generated.
模板
无效打印2(C&C);

这个代码是用C++中的思想复制的。它在GCC中用3.3.1版本编译。我猜向量从那时起已经有了很大的改变。@ ZeuuNee,请帮你一个忙,摆脱这个冰河时代的伪像。“你的实现可能不止这些。”-不,正好是两件。其他任何东西都是不符合要求的。@SergeyA:我很想知道哪件是“冰河时代的人工制品”这本书据说是好的,或者至少是在书中,但它确实很旧,我永远不会推荐它。“我想现在是编译。我现在去。发明火。这个代码是用C++中的思维复制的。它在GCC中用3.3.1版本编译。我猜向量的定义从那时起已经改变了很多。”,请帮你自己一个忙,扔掉这个冰河时代的人工制品。“你的实现可能还有更多”-不,正好是两个。其他任何东西都不符合。@SergeyA:我很想知道哪一个是“冰河时代的人工制品”这本书被认为是好的,或者至少它在图书馆里,但它确实很旧,我永远不会推荐它。@Fabioturate我是一个思想编译器。我现在去。发明火。
template<typename T, template<typename...> class C>
void print2(C<T>& c);