Explicación concisa de las reglas de colapso de referencia solicitadas: (1) A & & -> A &, (2) A & && -> A &, (3) A && & - - A &, y (4) A && && -> A &&
El siguiente enlace proporciona las 4 formas de colapso de referencia (si estoy en lo cierto, estas son las únicas 4 formas):http://thbecker.net/articles/rvalue_references/section_08.html.
Desde el enlace:
A & & se convierte en A &A & && se convierte en A &A && & se convierte en A &A && && se convierte en A &&Aunque puedo hacer una suposición educada, me gustaría una explicación concisa de la razón detrás de cada una de estas reglas de colapso de referencia.
Una pregunta relacionada, si pudiera: ¿Se utilizan estas reglas de colapso de referencia?en C ++ 11 internamente por tales utilidades STL tales comostd::move()
, std::forward()
, y similares, en casos típicos de uso en el mundo real? (Nota: estoy preguntando específicamente si las reglas de colapso de referencia se utilizan en C ++ 11, a diferencia de C ++ 03 o anterior).
Hago esta pregunta relacionada porque soy consciente de tales utilidades de C ++ 11 comostd::remove_reference
, pero no sé si las utilidades relacionadas con la referencia, tales comostd::remove_reference
se utilizan habitualmente en C ++ 11 paraevitar la necesidad de las reglas de colapso de referencia, o si se usanen conjunción con Las reglas de colapso de referencia.