如何使用模板为 "std::array" 声明 "using"

How to declare "using" for "std::array" using template

例如我有这样的代码:

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>;

但是如果我这样做,我会得到一个编译器错误:

error C2993: 'B': illegal type for non-type template parameter '_Size'

error C2955: 'std::array': use of class template requires template

argument list array(21): message : see declaration of 'std::array'

有什么方法可以声明在后台使用 std::arrayArray 吗?

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

std::array is a non-type template parameter 的第二个模板参数,类型为 std::size_t。应该是

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

嗯,std::array 的第二个模板参数不是类型而是 size_t,所以语法应该是

                     vvvvvv

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