Por que esse modelo “min” de cpp-next está com defeito?

Eu estava lendo cpp-next onde issomin modelo @ é apresentado como um exemplo de como o código C ++ detalhado pode ser comparado ao código python

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

No começo isso parece inocente, mas Daveed Vandevoorde fez essa observação

O modelo mínimo que usa decltype em sua especificação de tipo de retorno não funciona: ele retorna uma referência (porque o argumento é um valor l) que acaba se referindo a uma variável local nos usos mais comuns.

Pensei que talvez não fique claro para todos como o problema se manifesta. Você pode dar uma explicação detalhada e possíveis correções?

questionAnswers(5)

yourAnswerToTheQuestion