Ho una classe template in questo modo:const_cast nel modello. C'è un modificatore inconstante?
template<T>
class MyClass
{
T* data;
}
A volte, voglio usare la classe con un tipo costante T come segue:
MyClass<const MyObject> mci;
ma voglio modificare i dati utilizzando const_cast<MyObject*>data
(non è importante perché, ma MyClass
è una classe di puntatore intelligente di conteggio di riferimento che conserva il conteggio dei riferimenti nei dati stessi. I dati non devono essere modificati ma il conteggio deve essere modificato dal puntatore intelligente.).
C'è un modo per rimuovere la costanza da T
? Codice di fantasia:
const_cast<unconst T>(data)
?
Grazie per aver spiegato come funziona remove_const. – danatel
@danatel: davvero non vuoi usare remove_const.La modifica di un valore const mediante il cast della costanza è un comportamento non definito. Si desidera utilizzare __mutable__ sulla variabile refcount. –
:-) Io uso mutabile. Non avevo bisogno di una soluzione al mio problema, il problema era lì solo come illustrazione (si prega di leggere il post originale) - Ero curioso di sapere se c'è un modo per rimuovere la costanza. – danatel