Например, для чего-то например std::unordered_map при использовании пользовательского хеша xxhash, вместо того, чтобы вручную оборачивать xxhash свободной функции в функтор или использовать decltype в сигнатуре и передавать указатель функции в ctor (немного повторяется):
Код: Выделить всё
std::unordered_map map(&xxhash);Код: Выделить всё
std::unordered_map map;Код: Выделить всё
template
struct func
{
template
decltype(auto)
operator()(Ts&&... p_ts)
const
noexcept(std::is_nothrow_invocable_r_v<
std::invoke_result_t,
decltype(Fn),
Ts&&...>)
{
return std::invoke(Fn, std::forward(p_ts)...);
}
};
Может ли кто-нибудь внести некоторую ясность по этому вопросу?
Изменить: Кроме того, я не уверен, что RVO изменится в С++ 17. здесь ничего не меняется.
Подробнее здесь: https://stackoverflow.com/questions/792 ... nothrow-in
Мобильная версия