나는 현재이 작업을 수행 할 수 있습니다가변 순서 템플릿의 값을 특정 순서로 확장하는 가장 효율적인 방법은 무엇입니까?
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<>
임시 보관함을 피할 수있는 방법이있어서 복사/이동 비용을 지불 할 필요가 없습니까?
* "그러나이 임시 표준 : 튜플 <> 및 수반 모든 작업을 구성해야합니다."*는? –
@TonyD 그걸 가져 주셔서 감사합니다. – user2296177