在C ++ / C ++ 11中,我们如何声明std :: array的别名?
我的意思是这样的:
template<size_t N> using Array = array<int, N>;
int get(Array A, int index) {
return A[index];
}
但这导致编译错误:数组不是类型 什么是正确的方法?非常感谢。
答案 0 :(得分: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]; }