Почему этот «мин» шаблон cpp-next виноват?
я читалCPP-некст где этоmin
Шаблон представлен в качестве примера того, как подробный код C ++ можно сравнить с кодом Python
template <class T, class U>
auto min(T x, U y)->decltype(x < y ? x : y)
{ return x < y ? x : y; }
Сначала это выглядит невинно, но Дейвид Вандеворде сделал это замечание
Шаблон min, который использует decltype в своей спецификации возвращаемого типа, не работает: он возвращает ссылку (потому что аргумент является lvalue), которая в конечном итоге ссылается на локальную переменную в большинстве распространенных случаев использования.
Я подумал, что не всем понятно, как эта проблема проявляется. Можете ли вы дать подробное объяснение и возможные исправления?