the template guide geeksforgeeks example c++ templates

c++ - template - ¿Qué significa ''inicialización inválida de referencia no const''?



template function c++ (1)

En C ++, los temporales no pueden vincularse a referencias no constantes.

Main<int> &mainReference = Main<int>::tempFunction();

Aquí está intentando asignar el resultado de una expresión rvalue a una referencia mainReference no constante que no es válida.

Intenta hacerlo const

Al compilar este código, aparece el siguiente error :

En la función ''int main ()'': Línea 11: error: inicialización no válida de la referencia no constante del tipo ''Main &'' de un temporal de tipo ''Main''

Aquí está mi código:

template <class T> struct Main { static Main tempFunction(){ return Main(); } }; int main() { Main<int> &mainReference = Main<int>::tempFunction(); // <- line 11 }

No entiendo por qué? ¿Alguien puede explicar?