[c++] ¿Qué es "referencia de valor de * esto"?



Answers

Hay un caso de uso adicional para el formulario lvalue ref-calificador. C ++ 98 tiene un lenguaje que permite const funciones miembro no const para instancias de clase que son valores r. Esto lleva a todo tipo de rareza que va en contra del concepto de valor real y se desvía de la forma en que funcionan los tipos incorporados:

struct S {
  S& operator ++(); 
  S* operator &(); 
};
S() = S();      // rvalue as a left-hand-side of assignment!
S& foo = ++S(); // oops, dangling reference
&S();           // taking address of rvalue...

Los ref-calificadores de Lvalue resuelven estos problemas:

struct S {
  S& operator ++() &;
  S* operator &() &;
  const S& operator =(const S&) &;
};

Ahora los operadores funcionan como los de los tipos integrados, y solo aceptan valores l.

Question

Encontré una propuesta llamada "referencia rvalue para * esto" en la página de estado de C ++ 11 de clang.

He leído bastante sobre las referencias de valores reales y las he entendido, pero no creo que sepa nada al respecto. Tampoco pude encontrar muchos recursos en la web usando los términos.

Hay un enlace al documento de propuesta en la página: N2439 (semántica de movimiento extensible a * esto), pero tampoco obtengo muchos ejemplos a partir de ahí.

¿De qué se trata esta característica?






Related