1 2 template <long l> 3 struct Outputter; 4 5 #if defined(__INTEL_COMPILER) && defined(_MSVC_LANG) && _MSVC_LANG < 201403L 6 # if defined(__INTEL_CXX11_MODE__) 7 # if defined(__cpp_aggregate_nsdmi) 8 # define CXX_STD 201402L 9 # else 10 # define CXX_STD 201103L 11 # endif 12 # else 13 # define CXX_STD 199711L 14 # endif 15 #elif defined(_MSC_VER) && defined(_MSVC_LANG) 16 # define CXX_STD _MSVC_LANG 17 #else 18 # define CXX_STD __cplusplus 19 #endif 20 21 #if DEFAULT_CXX23 22 # if CXX_STD <= 202002L 23 Outputter<CXX_STD> o; 24 # endif 25 #elif DEFAULT_CXX20 26 # if CXX_STD <= 201703L 27 Outputter<CXX_STD> o; 28 # endif 29 #elif DEFAULT_CXX17 30 # if CXX_STD <= 201402L 31 Outputter<CXX_STD> o; 32 # endif 33 #elif DEFAULT_CXX14 34 # if CXX_STD != 201402L 35 Outputter<CXX_STD> o; 36 # endif 37 #elif DEFAULT_CXX11 38 # if CXX_STD != 201103L 39 Outputter<CXX_STD> o; 40 # endif 41 #else 42 # if !DEFAULT_CXX98 43 # error Buildsystem error 44 # endif 45 # if CXX_STD != 199711L && CXX_STD != 1 && \ 46 !defined(__GXX_EXPERIMENTAL_CXX0X__) 47 Outputter<CXX_STD> o; 48 # endif 49 #endif 50 main()51int main() 52 { 53 return 0; 54 } 55