1

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

我的意思是这样的:

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

int get(Array A, int index) {
    return A[index];
}

但这会导致编译错误:Array is not a type。
正确的方法是什么?非常感谢。

4

1 回答 1

6

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

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

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

template <typename T, size_t N>
T & get(std::array<T, N> & a, int n)
{ return a[n]; }
于 2013-09-01T18:56:12.947 回答