如何使用模板

时间:2019-10-10 11:38:24

标签: c++ arrays templates std stdarray

例如,我有类似的代码:

template<typename A, typename B>
using Map = std::map<A, B>;

template<typename A, typename B>
using UnorderedMap = std::unordered_map<A, B>;

我想为std::array做同样的事情,即:

template<typename A, typename B>
using Array = std::array<A, B>;

但是,如果执行此操作,则会出现编译器错误:

  

错误C2993:'B':非类型模板参数'_Size'的非法类型

     

错误C2955:“ std :: array”:使用类模板需要模板

     

参数列表array(21):消息:请参见'std :: array'的声明

是否有任何方法可以声明在后台使用Array的{​​{1}}?

最后,我想使用std::array之类的数组,而不是Array<int, 7> items

2 个答案:

答案 0 :(得分:12)

std::array的第二个模板参数是类型为std::size_t的{​​{3}}。应该是

template<typename A, std::size_t B>
using Array = std::array<A, B>;

答案 1 :(得分:4)

std::array的第二个模板参数不是类型而是size_t,因此语法应为

                     vvvvvv

template<typename T, size_t S>
using Array = std::array<T, S>;