https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82745
--- Comment #9 from helge at penne dot no --- I've tried compiling with -Wsystem-headers. This results in a significant number of warnings inside libstdc++ itself, due to conversions resulting in potential sign changes and/or loss of precision, even when I compile the example with an empty main(). So libstdc++ is simply not clean enough to permit compiling with -Wsystem-headers along with -Werror. Compiling with -Wsystem-headers is thus not not a viable solution with the current libstdc++, unless there are additional tweaks that I have not though of yet. I think this all boils down to the following: I really do not think it is OK that libstdc++ causes the compiler to suppress warnings for what is actually problems in the user's code, not the library. Suppressing system header warnings is perfectly reasonable for headers that contain declarations for symbols in libraries, but perhaps not equally acceptable in headers that define templates that get instantiated through application code. Such behaviour can evidently suppress important warnings for issues caused by application source code, and that is a real problem.