Boost.Predef provides a set of preprocessor macros for detecting compiler, platform, and architecture.