Почему std::get
для std::tuple
имеет так много перегрузок (http://en.cppreference.com/w/cpp/utility/tuple/get)? Один, соответствующий каждой возможной комбинации const
&
и &&
? Для каждой комбинации квалификаторы const ref в возвращаемом значении одинаковы. Почему бы не использовать только одну перегрузку, которая принимает тип кортежа путем пересылки ссылки, а затем просто пересылает возвращаемое значение на основе сигнатуры ввода? Что-то вроде этого
template <int Index, typename TupleType>
decltype(auto) get(TupleType&& tup);
Подобные вещи облегчили бы людям понимание того, что делает функция get
, и позволили бы избежать таких ошибок, как Проблема 2485 (https://wg21.cmeerw.net/lwg/issue2485)