Я читал cpp-next, где этот шаблон min
представлен в качестве примера того, как подробный код на С++ можно сравнить с кодом 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), который заканчивается ссылкой на локальную переменную в большинстве распространенных применений.
Я понял, что может быть неясно всем, как проявляется проблема. Не могли бы вы дать подробное объяснение и возможные исправления?