私は現在、これを行うことができます。variadicテンプレートの値を特定の順序で展開する最も効率的な方法は何ですか?
template <std::size_t... Is, class... Ts>
decltype(auto) custom_expand(std::index_sequence<Is...>, Ts&&... args)
{
auto tmp_tuple{ std::make_tuple(std::forward<Ts>(args)...) };
return std::make_tuple(std::move(std::get<Is>(tmp_tuple))...);
}
は、関数を呼び出す...
custom_expand(std::index_sequence<1, 2, 0>{}, int{ 0 }, char{ 1 }, double{ 2 });
...予想通りstd::tuple<char, double, int>
を返します。しかし、これには一時的なstd::tuple<>
を構築する必要があり、そのすべての操作に伴います。
一時的なstd::tuple<>
を避ける方法がありますので、私はコピー/ムーブを支払う必要はありませんか?
"しかし、これには一時的なstd :: tuple <>を構築する必要があり、そのすべての操作に伴います。" * - コンパイラで最適化を有効にして定量化しましたか? –
@TonyD私はそれを持ってきてくれてありがとう。 – user2296177