У меня есть класс шаблона, как это:const_cast в шаблоне. Есть ли модификатор unconst?
template<T>
class MyClass
{
T* data;
}
Иногда, я хочу использовать класс с постоянным типа Т следующим образом:
MyClass<const MyObject> mci;
, но я хочу изменить данные с помощью const_cast<MyObject*>data
(неважно почему, но MyClass
- класс интеллектуальных указателей ссылок, который хранит счетчик ссылок в самих данных. MyObject
получен из некоторого типа, который содержит счет. Данные не должны быть изменены, но счет должен быть изменен умный указатель.).
Есть ли способ удалить константу от T
? Выведенный код:
const_cast<unconst T>(data)
?
Благодарим вас за объяснение того, как remove_const работает со мной. – danatel
@ danatel: Вы действительно не хотите использовать remove_const.Изменение значения константы путем отбрасывания константы - неопределенное поведение. Вы хотите использовать __mutable__ в переменной refcount. –
:-) Я использую mutable. Мне не нужно решение моей проблемы, проблема была там как иллюстрация (пожалуйста, прочитайте оригинал сообщения) - Мне было любопытно, есть ли способ удалить постоянство. – danatel