que tienen una clase de plantilla como esta:const_cast en la plantilla. ¿Hay algún modificador incondicional?
template<T>
class MyClass
{
T* data;
}
A veces, quiero utilizar la clase con un tipo T constante de la siguiente manera:
MyClass<const MyObject> mci;
pero desea modificar los datos utilizando const_cast<MyObject*>data
(no es importante por qué, pero MyClass
es una clase de puntero inteligente de conteo de referencia que mantiene el recuento de referencias en los datos. MyObject
se deriva de algún tipo que contiene el recuento Los datos no se deben modificar, pero el recuento debe ser modificado por el puntero inteligente.)
¿Hay alguna manera de eliminar la const-ness de T
? Código ficticio:
const_cast<unconst T>(data)
?
Gracias por explicar cómo me funciona remove_const. – danatel
@danatel: Realmente no quiere usar remove_const.La modificación de un valor constante mediante la eliminación de la constness es un comportamiento indefinido. Desea usar __mutable__ en la variable de recuento. –
:-) Uso mutable. No necesitaba una solución a mi problema, el problema estaba allí solo como una ilustración (por favor, lea la publicación original). Tenía curiosidad de saber si hay una forma de eliminar la constancia. – danatel