Reputation: 64682
I am trying to make a templated class that only works on other templated classes.
My attempt looks like:
template<typename T<K,V>, size_t COUNT>
class DoubleTemplate { ..... };
But this give a compiler error where I try to specify T<K,V>
.
Is there a good way to require that the typename can only be a template on two params?
Upvotes: 0
Views: 32
Reputation: 56547
What you need is
template <template<typename, typename> class T, size_t count>
class DoubleTemplate { ... };
Example:
#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
}
Upvotes: 2