Да, вполне допустимо, чтобы заголовок стандартной библиотеки C ++ включал заголовки C.
Если вы хотите обойти это (без изменения кода стандартной библиотеки), вы можете отключить предупреждения перед включением заголовка, а затем снова включить их, используя GCC Diagnostic Pragmas .
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wold-style-cast"
#include <iostream>
#include <vector>
// etc.
#pragma GCC diagnostic pop
push
и pop
существуют для того, чтобы вы могли поддерживать состояние диагностики до и после #pragmas
.
Конечно, вам нужно будет делать это везде, где вы включаете стандартные заголовки. Если у вас есть много мест, в которых они есть, то лучше «рефакторинг» ваших включений, чтобы все ваши заголовки включали один заголовок, который, в свою очередь, включает стандартные заголовки с оболочками diagnostic
.