Нет.
Вы выполняете трансляцию на const Key &&
et c. Key::Key(const Key&&)
обычно не может сделать ничего полезного, поэтому вы будете копировать.
Вы можете захотеть иметь пару перегрузок
template <typename... Args>
ResourceHolder& operator+=(const ResourceInserter<Key, Args...>& inserter) {
if constexpr (sizeof...(Args) == 0) {
insert(inserter.key,
inserter.fileName);
} else {
insert(inserter.key,
inserter.fileName,
std::get<Args...>(inserter.tuple));
}
return *this;
}
template <typename... Args>
ResourceHolder& operator+=(ResourceInserter<Key, Args...>&& inserter) {
if constexpr (sizeof...(Args) == 0) {
insert(std::move(inserter.key),
std::move(inserter.fileName));
} else {
insert(std::move(inserter.key),
std::move(inserter.fileName),
std::move(std::get<Args...>(inserter.tuple)));
}
return *this;
}
Куда вы переезжаете от членов rvalue inserter