如何使用模板为 "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::array
的 Array
吗?
最后我想使用像 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>;
例如我有这样的代码:
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::array
的 Array
吗?
最后我想使用像 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>;