http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60422
Bug ID: 60422 Summary: <bits/xxx.h> headers should give a diagnostic when included directly Product: gcc Version: 4.9.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: libstdc++ Assignee: unassigned at gcc dot gnu.org Reporter: redi at gcc dot gnu.org Some users do dumb things like: #include <algorithm> #include <ext/concurrence.h> #include <bits/unique_ptr.h> #include <bits/shared_ptr.h> and expect to be able to use std::shared_ptr. This happens to work with GCC 4.8, but not with 4.9 because we re-arranged some headers to allow the library to use shared_ptr internally. In order to stop this nonsense we should add preprocessor checks to the headers: #ifndef _MEMORY #error Do not include this header directly, use <memory> instead #else ... #endif