Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 制作需要模板的模板_C++_Templates - Fatal编程技术网

C++ 制作需要模板的模板

C++ 制作需要模板的模板,c++,templates,C++,Templates,我试图创建一个只在其他模板类上工作的模板类 我的尝试看起来像: template<typename T<K,V>, size_t COUNT> class DoubleTemplate { ..... }; 模板 类DoubleTemplate{….}; 但这会导致一个编译器错误,我试图指定T 有没有一种好方法可以要求typename只能是两个参数上的模板?您需要的是 template <template<typename, typename> c

我试图创建一个只在其他模板类上工作的模板类

我的尝试看起来像:

template<typename T<K,V>, size_t COUNT>
class DoubleTemplate { ..... };
模板
类DoubleTemplate{….};
但这会导致一个编译器错误,我试图指定
T

有没有一种好方法可以要求typename只能是两个参数上的模板?

您需要的是

 template <template<typename, typename> class T, size_t count> 
 class DoubleTemplate { ... };
模板
类DoubleTemplate{…};
例如:

#include <iostream>
#include <cstddef>

template <typename K, typename V>
class Foo {};

class Bar {};

template <template<typename, typename> class T, std::size_t COUNT>
class DoubleTemplate {}; // you need class T, not typename T, to be corrected in C++17

int main()
{
    DoubleTemplate<Foo, 10> dt;
    // DoubleTemplate<Bar, 20> dt2; //oops, Bar is not a 2-param template class
}
#包括
#包括
模板
类Foo{};
类条{};
模板
类DoubleTemplate{};//您需要在C++17中更正类T,而不是类型名T
int main()
{
双模板dt;
//DoubleTemplate dt2;//哎呀,Bar不是2参数模板类
}

你想用它做什么?T是一种很好的类型。如果T中有这样的类型定义,您可以将类型名用作T::K或T::V。。。