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?