Dove nello standard C++ parla di aliasing? Ho guardato il ToC e non ho visto la parola "pseudonimo". Ho provato a cercare nell'unica regola di definizione (3.2) e una ricerca di "alias" non ha avuto risultati. Sono in perdita dove potrebbe essere. Sto cercando di memoria aliasingDove lo standard parla di aliasing?
risposta
Aliasing è discusso principalmente in §3.10 [basic.lval]/10:
Se un programma tenta di accedere al valore memorizzato di un oggetto attraverso una glvalue di diverso uno dei seguenti tipi il comportamento è indefinito:
- tipo dinamico dell'oggetto,
- una versione cv qualificato di tipo dinamico dell'oggetto,
- un tipo simile (come definito in 4.4) per il tipo dinamico dell'oggetto,
- un tipo che è il segno o tipo senza segno corrispondente al tipo dinamico dell'oggetto,
- un tipo che è la firma o tipo senza segno corrispondente a una versione cv qualificata del tipo dinamico
- un tipo aggregato o di unione che include uno dei tipi sopra menzionati tra i suoi elementi o membri di dati statici non (incluso, in modo ricorsivo, un elemento o dati non statici membro di un subaggregato o unione contenuta),
- un tipo che è un tipo di classe base (eventualmente qualificata per il cv) del tipo dinamico dell'oggetto,
- a
char
ounsigned char
tipo.52) L'intento di questo elenco è specificare quelle circostanze in cui un oggetto può o non può essere alias.
Così, per esempio,
int x = 1;
*(char*)(&x); // (implementation-)defined
*(unsigned*)(&x); // (implementation-)defined
*(float*)(&x); // undefined
seguenti diciture può anche essere interessante.
§5.17 [expr.ass]/8
Se il valore essere memorizzato in un oggetto è accessibile da un altro oggetto che si sovrappone in alcun modo la memorizzazione del primo oggetto, quindi la sovrapposizione sarà esatto e i due oggetti devono avere lo stesso tipo, altrimenti il comportamento di non è definito. [Nota: questa restrizione si applica alla relazione tra i lati sinistro e destro di l'operazione di assegnazione; non è una dichiarazione su come l'obiettivo del compito può essere aliasato in generale . Vedi 3.10. - nota end]
§17.6.4.9 [res.on.argomenti]/1 Pt 3
Se un argomento funzione si lega ad un parametro di riferimento rvalue, l'applicazione può supporre che questo parametro è un riferimento unico a questo argomento. ... [Il implementazione è gratuito per ottimizzare via aliasing controlli che potrebbero essere necessari se l'argomento fosse un lvalue.]
§26.6.2 [valarray.syn]/2:
Il Le classi di array
valarray
sono definite prive di determinate forme di aliasing, consentendo quindi l'ottimizzazione delle operazioni su .
e il resto di <valarray>
discute anche come la classe deve essere implementata per evitare l'alias dei dati.
- 1. Dove posso trovare lo standard della GUI di Windows?
- 2. char * conversione e aliasing regole
- 3. Standard per lo pseudo codice?
- 4. Perché lo standard C lascia indefinito l'uso di variabili indeterminate?
- 5. Rigida regola di aliasing del C++ - L'esonero di aliasing 'char' è una strada a doppio senso?
- 6. Visual C++ supporta "aliasing rigoroso"?
- 7. regole C aliasing e memcpy
- 8. Aliasing rigoroso in Rust?
- 9. aliasing URL Jenkins artefatto
- 10. Dove trovare facilmente i prototipi di funzioni standard C
- 11. Silverlight stampa anti-aliasing
- 12. argomenti aliasing in strtol
- 13. OO Polymorphism in C, problemi di aliasing?
- 14. Bug in NHibernate Aliasing
- 15. Dove dovrei posizionare lo scriptmanager
- 16. Java - entityExpansionLimit. Dove lo metto?
- 17. Che cosa consente lo standard #pragma?
- 18. Oracle unirà JRockIt e lo standard JDK?
- 19. Perché lo standard HL7 non utilizza XML?
- 20. Lo standard POSIX `source` della shell?
- 21. Lo standard C++ richiede una macchina binaria?
- 22. Lo standard Html.DisplayTextFor() non codifica HTML?
- 23. Che cos'è un venditore quando si parla di java?
- 24. Qual è lo spazio dei nomi 'Standard'?
- 25. Bitmap non disegnata anti-aliasing
- 26. Sto violando rigide regole di aliasing?
- 27. Dove posso trovare un elenco delle librerie standard Java?
- 28. Aliasing di un modello in ngtemplate
- 29. Lo standard di commento $ FALL-THROUGH $ di Eclipse?
- 30. Standard di codifica per lo sviluppo di app per iPhone
Potresti essere più specifico? Ci sono almeno due cose a cui ci si può riferire con "aliasing": alias di namespace e alias di dati nella memoria tramite structs/unions/array sovrapposti. – dasblinkenlight
@dasblinkenlight: corretto. Alias di dati/memoria –