我有一些元素的数组。 我想创建一个函数,它将生成一个包含元素引用的reference_wrapper数组。
具有如下界面的东西:
template<typename T, size_t N>
std::array<std::reference_wrapper<T>,N> wrap(std::array<T,N>& a);
最好的方法是什么?
注意:我不想使用矢量。
答案 0 :(得分:8)
你可以这样做。这是一个demo。
namespace detail {
template<typename T, std::size_t N, std::size_t... Index>
std::array<std::reference_wrapper<T>, N> wrap(std::array<T, N>& a,
std::index_sequence<Index...>) {
return {a[Index]...};
}
}
template<typename T, size_t N>
std::array<std::reference_wrapper<T>,N> wrap(std::array<T,N>& a) {
return detail::wrap(a, std::make_index_sequence<N>());
}