123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128 |
- /*
- Copyright Rene Rivera 2011-2015
- Distributed under the Boost Software License, Version 1.0.
- (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt)
- */
- #ifndef BOOST_PREDEF_LANGUAGE_STDCPP_H
- #define BOOST_PREDEF_LANGUAGE_STDCPP_H
- #include <boost/predef/version_number.h>
- #include <boost/predef/make.h>
- /* tag::reference[]
- = `BOOST_LANG_STDCPP`
- http://en.wikipedia.org/wiki/C%2B%2B[Standard {CPP}] language.
- If available, the year of the standard is detected as YYYY.MM.1 from the Epoc date.
- Because of the way the {CPP} standardization process works the
- defined version year will not be the commonly known year of the standard.
- Specifically the defined versions are:
- .Detected Version Number vs. {CPP} Standard Year
- [options="header"]
- |===
- | Detected Version Number | Standard Year | {CPP} Standard
- | 27.11.1 | 1998 | ISO/IEC 14882:1998
- | 41.3.1 | 2011 | ISO/IEC 14882:2011
- | 44.2.1 | 2014 | ISO/IEC 14882:2014
- | 47.3.1 | 2017 | ISO/IEC 14882:2017
- |===
- [options="header"]
- |===
- | {predef_symbol} | {predef_version}
- | `+__cplusplus+` | {predef_detection}
- | `+__cplusplus+` | YYYY.MM.1
- |===
- */ // end::reference[]
- #define BOOST_LANG_STDCPP BOOST_VERSION_NUMBER_NOT_AVAILABLE
- #if defined(__cplusplus)
- # undef BOOST_LANG_STDCPP
- # if (__cplusplus > 100)
- # define BOOST_LANG_STDCPP BOOST_PREDEF_MAKE_YYYYMM(__cplusplus)
- # else
- # define BOOST_LANG_STDCPP BOOST_VERSION_NUMBER_AVAILABLE
- # endif
- #endif
- #if BOOST_LANG_STDCPP
- # define BOOST_LANG_STDCPP_AVAILABLE
- #endif
- #define BOOST_LANG_STDCPP_NAME "Standard C++"
- /* tag::reference[]
- = `BOOST_LANG_STDCPPCLI`
- http://en.wikipedia.org/wiki/C%2B%2B/CLI[Standard {CPP}/CLI] language.
- If available, the year of the standard is detected as YYYY.MM.1 from the Epoc date.
- [options="header"]
- |===
- | {predef_symbol} | {predef_version}
- | `+__cplusplus_cli+` | {predef_detection}
- | `+__cplusplus_cli+` | YYYY.MM.1
- |===
- */ // end::reference[]
- #define BOOST_LANG_STDCPPCLI BOOST_VERSION_NUMBER_NOT_AVAILABLE
- #if defined(__cplusplus_cli)
- # undef BOOST_LANG_STDCPPCLI
- # if (__cplusplus_cli > 100)
- # define BOOST_LANG_STDCPPCLI BOOST_PREDEF_MAKE_YYYYMM(__cplusplus_cli)
- # else
- # define BOOST_LANG_STDCPPCLI BOOST_VERSION_NUMBER_AVAILABLE
- # endif
- #endif
- #if BOOST_LANG_STDCPPCLI
- # define BOOST_LANG_STDCPPCLI_AVAILABLE
- #endif
- #define BOOST_LANG_STDCPPCLI_NAME "Standard C++/CLI"
- /* tag::reference[]
- = `BOOST_LANG_STDECPP`
- http://en.wikipedia.org/wiki/Embedded_C%2B%2B[Standard Embedded {CPP}] language.
- [options="header"]
- |===
- | {predef_symbol} | {predef_version}
- | `+__embedded_cplusplus+` | {predef_detection}
- |===
- */ // end::reference[]
- #define BOOST_LANG_STDECPP BOOST_VERSION_NUMBER_NOT_AVAILABLE
- #if defined(__embedded_cplusplus)
- # undef BOOST_LANG_STDECPP
- # define BOOST_LANG_STDECPP BOOST_VERSION_NUMBER_AVAILABLE
- #endif
- #if BOOST_LANG_STDECPP
- # define BOOST_LANG_STDECPP_AVAILABLE
- #endif
- #define BOOST_LANG_STDECPP_NAME "Standard Embedded C++"
- #endif
- #include <boost/predef/detail/test.h>
- BOOST_PREDEF_DECLARE_TEST(BOOST_LANG_STDCPP,BOOST_LANG_STDCPP_NAME)
- #include <boost/predef/detail/test.h>
- BOOST_PREDEF_DECLARE_TEST(BOOST_LANG_STDCPPCLI,BOOST_LANG_STDCPPCLI_NAME)
- #include <boost/predef/detail/test.h>
- BOOST_PREDEF_DECLARE_TEST(BOOST_LANG_STDECPP,BOOST_LANG_STDECPP_NAME)
|