繁体   English   中英

具有不同非类型模板参数的模板 class 偏特化

[英]template class partial specialization with different non-type template parameter

是否可以“部分专门化”具有不同非类型模板参数值的模板 class? 更具体地说,我试图根据不同的非类型模板参数将std::vectorstd::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> {};

演示: https://godbolt.org/z/XpJ254

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM