c ++ const_cast gcc 8.2.1 -Wignored-квалификаторы ошибка? - PullRequest
0 голосов
/ 19 декабря 2018

Следующая программа выдает это с помощью 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 это не должно давать предупреждения.Кто-нибудь может это проверить?

1 Ответ

0 голосов
/ 19 декабря 2018

Я думаю, вы неправильно поняли предупреждение.

Дело не в отсутствии const здесь:

const_cast<      int * const>(ptr)
//         const  

Скорее, речь идет о наличии const здесь:

const_cast<int * const>(ptr)
//               ^~~~~

Здесь const имеет абсолютно нулевой эффект и может быть удален, это то, о чем говорится в предупреждении.

...