在C++中如何声明std :: array的别名?

use*_*954 1 c++ templates stl using c++11

在C++/C++ 11中,我们如何声明std :: array的别名?

我的意思是这样的:

template<size_t N> using Array = array<int, N>;

int get(Array A, int index) {
    return A[index];
}
Run Code Online (Sandbox Code Playgroud)

但这导致编译错误:数组不是类型.
什么是正确的方法?非常感谢.

Ker*_* SB 6

由于您的别名是模板,因此该get函数也需要是一个模板:

template <size_t N> int get(Array<N> const & a, int index)
{
    return a[index];
}
Run Code Online (Sandbox Code Playgroud)

当然,对于原始array模板,您也可以更普遍地执行此操作:

template <typename T, size_t N>
T & get(std::array<T, N> & a, int n)
{ return a[n]; }
Run Code Online (Sandbox Code Playgroud)