[英]template class partial specialization with different non-type template parameter
是否可以“部分专门化”具有不同非类型模板参数值的模板 class? 更具体地说,我试图根据不同的非类型模板参数将std::vector和std::array的使用组合到一个 class 中,如下所示:
template<typename T, int Size> //if Size given, use std::array stuff
class MyArray:public std::array<T, Size> {...}
template<typename T> //if Size is not given, use std::vector stuff
class MyArray:public std::vector<T> {...}
但是第二个模板将是一个重新定义的模板错误。 我尝试使用std::enable_if ,但不知道如何在这里正确使用它。
您可以使用哨兵值:
template<typename T, int Size = -1> //if Size given, use std::array stuff
class MyArray:public std::array<T, Size> {};
template<typename T> //if Size is not given, use std::vector stuff
class MyArray<T, -1>:public std::vector<T> {};
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.