Следующая программа производит это с помощью gcc 8.2.1:
предупреждение: спецификаторы типа игнорируются в типе результата приведения [-Wignored-qualifiers] int * const ptrCast = const_cast (ptr);
int main() {
int i = 0;
const int * const ptr = &i;
int * const ptrCast = const_cast<int * const>(ptr);
return *ptrCast;
}
Скомпилировано как: gcc -Wignored-qualifiers test.cc
Из моего понимания const_cast это не должно давать предупреждение. Кто-нибудь может это проверить?
Я думаю, что вы неправильно поняли предупреждение.
Дело не в отсутствии const
Вот:
const_cast< int * const>(ptr)
// const
Скорее, речь идет о наличии const
Вот:
const_cast<int * const>(ptr)
// ^~~~~
Вот const
имеет абсолютно нулевой эффект и может быть удален, вот что говорит предупреждение.
Других решений пока нет …