Mam klasy szablon tak:const_cast w szablonie. Czy istnieje modyfikator niezgodności?
template<T>
class MyClass
{
T* data;
}
Czasami chcę użyć klasy ze stałą typu T, co następuje:
MyClass<const MyObject> mci;
ale chcę, aby zmodyfikować dane używając const_cast<MyObject*>data
(nie jest ważne dlaczego ale MyClass
jest klasą inteligentnych wskaźników licznika odwołań, która przechowuje licznik odwołań w samych danych.MyObject
pochodzi z pewnego typu, który zawiera licznik. Dane nie powinny być modyfikowane, ale liczba musi być modyfikowana przez inteligentny wskaźnik.).
Czy istnieje sposób usunięcia konstelacji z T
? Fikcyjny kod:
const_cast<unconst T>(data)
?
Dziękuję za wyjaśnienie, jak działa remove_const. – danatel
@danatel: Naprawdę nie chcesz używać remove_const.Modyfikowanie wartości const przez odrzucanie constness jest niezdefiniowanym zachowaniem. Chcesz użyć __mutable__ na zmiennej refcount. –
:-) Używam mutable. Nie potrzebowałem rozwiązania mojego problemu, problem był tam jako ilustracja (proszę przeczytać oryginalny post) - Byłem ciekawy, czy istnieje sposób na usunięcie stałości. – danatel