什么是T(&var)[N]?

Mih*_*yan 4 c++ boost

boost/utility/swap.hpp我发现这段代码:

template<class T, std::size_t N>
void swap_impl(T (& left)[N], T (& right)[N])
{
  for (std::size_t i = 0; i < N; ++i)
  {
    ::boost_swap_impl::swap_impl(left[i], right[i]);
  }
}
Run Code Online (Sandbox Code Playgroud)

什么是leftright?它们是否引用了数组?C++ ISO标准2003或更高版本是否允许此代码?

ken*_*ytm 7

对类型为T和长度为N的数组的引用.

这是C指针到数组语法的自然扩展,并得到C++ 03的支持.

您可以使用cdecl.org尝试解析这些复杂类型声明.