Почему этот «мин» шаблон 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), которая в конечном итоге ссылается на локальную переменную в большинстве распространенных случаев использования.

Я подумал, что не всем понятно, как эта проблема проявляется. Можете ли вы дать подробное объяснение и возможные исправления?

Ответы на вопрос(5)

Ваш ответ на вопрос