zti*_*tik 1 c++ templates c++11 c++14
我有一些元素的数组.我想创建一个函数,它将生成一个包含元素引用的reference_wrapper数组.
有一个界面的东西:
template<typename T, size_t N>
std::array<std::reference_wrapper<T>,N> wrap(std::array<T,N>& a);
Run Code Online (Sandbox Code Playgroud)
最好的方法是什么?
注意:我不想使用矢量.
你可以这样做.这是一个演示.
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>());
}
Run Code Online (Sandbox Code Playgroud)