template
auto transform_tuple_impl(F&& f, Tuple&& tuple, std::index_sequence)
{
return std::make_tuple(f(std::get(std::forward(tuple)))...);
}
template
auto transform_tuple(F&& f, Tuple&& t)
{
constexpr size_t size = std::tuple_size::value;
return transform_tuple_impl(std::forward(f), std::forward(t), std::make_index_sequence{});
}
< /code>
С этим сообщением: < /p>
error: 'tuple' used after it was forwarded [bugprone-use-after-move,-warnings-as-errors]
| return std::make_tuple(f(std::get(std::forward(tuple)))...);
| ^
note: forward occurred here
| return std::make_tuple(f(std::get(std::forward(tuple)))...);
| ^
note: the use and forward are unsequenced, i.e. there is no guarantee about the order in which they are evaluated
| return std::make_tuple(f(std::get(std::forward(tuple)))...);
| ^
Я использую C ++ 14, так что std :: get должен иметь перегруженного оператора для ссылки на RVALUE. Будет ли способ обеспечить соблюдение порядка оценки? Это ложный положительный?
[code]clang-tidy[/code] Сообщает следующий кусок кода в качестве ошибки, используя-user-move [code]template auto transform_tuple_impl(F&& f, Tuple&& tuple, std::index_sequence) { return std::make_tuple(f(std::get(std::forward(tuple)))...); }
template auto transform_tuple(F&& f, Tuple&& t) { constexpr size_t size = std::tuple_size::value; return transform_tuple_impl(std::forward(f), std::forward(t), std::make_index_sequence{}); } < /code> С этим сообщением: < /p> error: 'tuple' used after it was forwarded [bugprone-use-after-move,-warnings-as-errors] | return std::make_tuple(f(std::get(std::forward(tuple)))...); | ^ note: forward occurred here | return std::make_tuple(f(std::get(std::forward(tuple)))...); | ^ note: the use and forward are unsequenced, i.e. there is no guarantee about the order in which they are evaluated | return std::make_tuple(f(std::get(std::forward(tuple)))...); | ^ [/code] Я использую C ++ 14, так что std :: get должен иметь перегруженного оператора для ссылки на RVALUE. Будет ли способ обеспечить соблюдение порядка оценки? Это ложный положительный?