Da the manual:Quali sono le implicazioni dell'uso di _GLIBCXX_CXX11_ABI per utilizzare l'ABI pre-5.1 C++ con le caratteristiche di C++ 11/14?
Nella versione 5.1 di GCC libstdC++ ha introdotto una nuova libreria ABI che include nuove implementazioni di std :: string e std :: list. Queste modifiche erano necessarie per conformarsi allo standard C++ del 2011 che proibisce le stringhe Copy-On-Write e richiede liste per tenere traccia delle loro dimensioni.
È possibile utilizzare la macro _GLIBCXX_USE_CXX11_ABI per controllare whter le intestazioni di libreria usa il vecchio o il nuovo ABI, indipendentemente da quale "-std" viene utilizzato.
Mi piacerebbe sapere quali sarebbero le implicazioni dell'utilizzo di questa "compatibilità ABI"? Immagino che le prestazioni in fase di esecuzione delle operazioni su piccole stringhe saranno influenzate (suppongo negativamente), e che l'accesso alla dimensione dell'elenco va da O (1) (C11 ABI) a O (N) (compatibilità ABI).
- Le mie ipotesi sono corrette e qualcuno può elaborare?
- Ci sono altre implicazioni che mi sono sfuggite? E riguardo le caratteristiche di atomica e di concorrenza? Qualche impatto?
Quando si dice "C" vuol dire "O (1)"? –
Credo di si. Intendo il tempo costante. – Spacemoose
Penso che il modo più semplice sarebbe quello di passare attraverso le intestazioni, non ci sono così tante occorrenze di _GLIBCXX_USE_CXX11_ABI. –