Di seguito è male:Const-Correttezza per elementi di contenitori std
vector<const int> vec;
Il problema è che il tipo di modello ha bisogno di essere assegnabili. Il seguente codice compila [EDIT: in Visual Studio 2010], dimostrando un problema con il sopra:
vector<const int> vec;
vec.push_back(6);
vec[0] += 4;
Con i tipi più complicati, questo può essere un problema serio.
La mia prima domanda è se esiste un motivo per questo comportamento. Mi sembra che sia possibile rendere contenitori const che non consentono i contenitori sopra e non-const che lo consentono.
In secondo luogo, c'è un modo per rendere contenitori che funzionano in questo modo?
In terzo luogo, cosa sta effettivamente accadendo qui (con un tipo di utente)? Mi rendo conto che è un comportamento indefinito, ma in che modo STL lo sta compilando?
Si sta utilizzando la libreria standard in un modo non definito. Ciò significa che non ci sono * requisiti * su cosa dovrebbe accadere. Alcune operazioni potrebbero sembrare funzionare, altre no. E nessuna coerenza da aspettarsi tra diverse implementazioni. –
Questo non si compila su g ++ 4.6.3. –
Il tuo codice non viene compilato con C++ standard. –