const_cast
, несмотря на название, не относится к const
; он работает с cv-qualifiers , который эффективно включает в себя const
и volatile
.
Хотя добавление такого классификатора разрешено прозрачно, для удаления любого требуется const_cast
.
Поэтому в приведенном вами примере:
char* p = /**/;
char const* q = const_cast<char const*>(p);
присутствие const_cast
является ложным (я лично думаю, что это скрывает синтаксис).
Но вы можете удалить volatile
, в этом случае он вам понадобится:
char const volatile* p = /**/;
char const* q = const_cast<char const*>(p);
Это может появиться, например, в коде драйвера.