default_dialect.cpp 1.3 KB

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