我看到一些有效的模板代码如下:
template<typename R, typename P, size_t N, size_t... I>
constexpr array<R, N> to_array_impl(P (&a)[N], std::index_sequence<I...>) noexcept
{
return { {a[I]...} };
}
那么,这里的双大括号是什么意思呢?什么时候我们需要使用双大括号(我现在使用的是c++17),我猜它只限于return
语句?
我还看到了如下代码,在双括号内有函数调用:
template<typename R, typename P, size_t N, size_t... I>
constexpr array<R, N> to_array_impl(P (&&a)[N], std::index_sequence<I...>) noexcept
{
return { {move(a[I])...} };
}
那么使用一个大括号和两个大括号有什么区别呢?
谢谢!
1条答案
按热度按时间sycxhyv71#
什么时候我们需要使用双大括号(我现在用的是c++17),我猜它只限于return语句?
在你给出的例子中,双大括号不是必需的。用一组大括号包围包扩展就足够了。
那么使用一个大括号和两个大括号有什么区别呢?
在你给出的例子中,添加双大括号没有额外的效果。也就是说,使用一组大括号等价于使用双大括号(在给出的例子中)。