制作需要模板的模板
Making a template that requires a template
我正在尝试制作一个仅适用于其他模板 class 的模板 class。
我的尝试看起来像:
template<typename T<K,V>, size_t COUNT>
class DoubleTemplate { ..... };
但这会在我尝试指定 T<K,V>
.
时出现编译器错误
有什么好的方法可以要求typename只能是两个参数的模板吗?
你需要的是
template <template<typename, typename> class T, size_t count>
class 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
}
我正在尝试制作一个仅适用于其他模板 class 的模板 class。
我的尝试看起来像:
template<typename T<K,V>, size_t COUNT>
class DoubleTemplate { ..... };
但这会在我尝试指定 T<K,V>
.
有什么好的方法可以要求typename只能是两个参数的模板吗?
你需要的是
template <template<typename, typename> class T, size_t count>
class 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
}