我想知道为什么不支持template<typename T1, typename T2>
到template<typename T1, int i>
的课程专精。
例如:
template<typename T1, typename T2>
struct B{};
template<typename T1>
struct B<T1, T1>{}; //ok
template<typename T1>
struct B<T1, int>{}; //ok
template<typename T1,int i>
struct B<T1,i>{}; //error: expected a type, got 'i'
template<typename T1,constexpr int i>
struct B<T1,i>{}; //error: expected a type, got 'i'
答案 0 :(得分:6)
您的主模板需要一个类型参数,但$ cd /tmp
$ wget scapy.net
$ unzip scapy-latest.zip
$ cd scapy-2.*
$ sudo python setup.py install
不是类型,它是非类型参数。 i
是一种类型。
您可以使用int
以某种方式绑定它们:
std::integral_constant
这不完全相同,但使用声明可以帮助解决它:
template<typename T1, int i>
struct B<T1, std::integral_constant<int, i>>{};