¿En qué parte del estándar C++ habla de aliasing? Miré el ToC y no vi ninguna mención de la palabra 'alias'. Traté de buscar en la regla de una definición (3.2) y una búsqueda de 'alias' no tuvo resultados allí. Estoy perdido donde puede estar. Busco memoria aliasing¿De dónde habla la norma sobre aliasing?
Respuesta
Aliasing se discute principalmente en §3.10 [basic.lval]/10:
Si un programa intenta acceder al valor almacenado de un objeto a través de un glvalue de que no sea uno de los siguientes tipos no está definido el comportamiento:
- el tipo dinámico del objeto,
- una versión cv calificado del tipo dinámico del objeto,
- un tipo similar (como se define en 4.4) para el tipo dinámico del objeto,
- un tipo que es el firmado o tipo sin signo correspondiente al tipo dinámico del objeto,
- un tipo que es el firmado o tipo sin firmar correspondiente a una versión cv-calificada del tipo dinámico del objeto,
- un agregado o tipo de unión que incluye uno de los tipos antes mencionados entre sus elementos o miembros de datos estáticos no (incluido, recursivamente, un elemento o elemento de datos no estáticos de un subaggregado o unión contenida),
- un tipo que es un tipo de clase base (posiblemente cv calificado) del tipo dinámico del objeto,
- a
char
ounsigned char
tipo.52) La intención de esta lista es especificar aquellas circunstancias en las que un objeto puede o no puede tener un alias.
Así, por ejemplo,
int x = 1;
*(char*)(&x); // (implementation-)defined
*(unsigned*)(&x); // (implementation-)defined
*(float*)(&x); // undefined
las siguientes menciones también puede ser interesante.
§5.17 [expr.ass]/8
Si se accede al valor que se almacena en un objeto de otro objeto que se superpone en forma alguna el almacenamiento de el primer objeto, entonces el solapamiento será exacta y los dos objetos deben tener el mismo tipo, de lo contrario, el comportamiento no está definido. [Nota: Esta restricción se aplica a la relación entre los lados izquierdo y derecho de la operación de asignación; no es una declaración sobre cómo se puede alias el objetivo de la asignación en en general. Ver 3.10. - finales nota]
§17.6.4.9 [res.on.argumentos]/1 pt 3:
Si un argumento de la función se une a un parámetro de referencia rvalue, la aplicación puede suponer que este parámetro es una referencia única a este argumento. ... [La aplicación es gratuito para optimizar distancia aliasing controles que podrían ser necesarias si el argumento era un valor-i.]
§26.6.2 [valarray.syn]/2:
El
valarray
las clases de matriz se definen como libres de ciertas formas de aliasing, lo que permite optimizar las operaciones en .
y el resto de <valarray>
también explica cómo se debe implementar la clase para evitar el alias de datos.
- 1. Necesita cita de norma sobre la legalidad de la función principal, como una función de plantilla
- 2. ¿Dónde leer sobre programación?
- 3. ¿Dónde aprender sobre "bit"?
- 4. ¿Por qué C++ definen en la norma como la norma euclídea al cuadrado
- 5. Cuando la gente habla sobre escalar un sitio web con 'fragmentos', ¿qué significan?
- 6. ¿Norma eficiente en Java?
- 7. ¿Es este truco válido según la norma?
- 8. ¿Dónde encontrar recursos sobre Refactorización?
- 9. ¿Dónde puedo aprender sobre MEF?
- 10. fecha de conversión .NET JSON con la norma ISO
- 11. ¿ActiveRecord habla con dos bases de datos?
- 12. Anti-aliasing en OpenGL
- 13. Anti-aliasing de impresión Silverlight
- 14. Anti-aliasing raro en la vista personalizada
- 15. ¿Por qué la gente habla sobre marcos DI "instanciando un gráfico de objetos" en lugar de "crear instancias de objetos"?
- 16. ¿Dónde puedo encontrar información sobre la estructura de Delphi VMT?
- 17. PDO ¿Auto aliasing when fetching?
- 18. Recomendación sobre dónde debería empezar a leer sobre CDI (Weld)
- 19. Python - Convierte fecha de la norma ISO 8601
- 20. ¿El orden de inicialización está garantizado por la norma?
- 21. Convertir marca de tiempo Unix a la norma ISO 8601
- 22. cómo calcular la norma euclidiana de un vector en R?
- 23. Obtiene la norma 1 de un vector en Python
- 24. PHP DateTime :: createFromFormat no analiza la norma ISO 8601 de fecha y hora
- 25. Sitio web que habla con la aplicación del cliente?
- 26. Resalte la palabra actual que habla el motor TTS
- 27. CSS: @ font-face anti aliasing
- 28. rieles I18n varios archivos aliasing
- 29. ¿Dónde puedo encontrar recursos sobre la programación C "moderna"?
- 30. ¿Dónde puedo encontrar un tutorial sobre la rueda giratoria?
¿Podría ser más específico? Hay al menos dos cosas a las que se puede hacer referencia mediante "aliasing": aliasing de espacio de nombres y aliasing de datos en la memoria a través de structs/unions/overlapping arrays. – dasblinkenlight
@dasblinkenlight: Reparado. Aliasing de datos/memoria –