¿Por qué esta plantilla "min" de cpp-next tiene la culpa?

Estaba leyendo cpp-next donde estomin template se presenta como un ejemplo de cómo se puede comparar el código detallado de C ++ con el código de python

template <class T, class U>
auto min(T x, U y)->decltype(x < y ? x : y)
{ return x < y ? x : y; }

l principio, esto parece inocente, pero Daveed Vandevoorde hizo este comentari

La plantilla mínima que usa decltype en su especificación de tipo de retorno no funciona: devuelve una referencia (porque el argumento es un valor l) que termina refiriéndose a una variable local en los usos más comunes.

Pensé que no todo el mundo podría tener claro cómo se manifiesta el problema. ¿Puede dar una explicación detallada y posibles soluciones?

Respuestas a la pregunta(5)

Su respuesta a la pregunta