test_variadic_macro.cxx 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. // (C) Copyright Edward Diener 2011-2015
  2. // Use, modification and distribution are subject to the Boost Software License,
  3. // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
  4. // http://www.boost.org/LICENSE_1_0.txt).
  5. #include <boost/vmd/detail/setup.hpp>
  6. #include <boost/predef.h>
  7. #include <boost/detail/lightweight_test.hpp>
  8. int main()
  9. {
  10. #if !BOOST_PP_VARIADICS
  11. # if defined __GCCXML__
  12. BOOST_ERROR("No variadic macro support: __GCCXML__ defined.");
  13. # elif defined __CUDACC__
  14. BOOST_ERROR("No variadic macro support: __CUDACC__ defined.");
  15. # elif defined __PATHSCALE__
  16. BOOST_ERROR("No variadic macro support: __PATHSCALE__ defined.");
  17. # elif defined __DMC__
  18. BOOST_ERROR("No variadic macro support: __DMC__ defined.");
  19. # elif defined __CODEGEARC__
  20. BOOST_ERROR("No variadic macro support: __CODEGEARC__ defined.");
  21. # elif defined __BORLANDC__
  22. BOOST_ERROR("No variadic macro support: __BORLANDC__ defined.");
  23. # elif defined __MWERKS__
  24. BOOST_ERROR("No variadic macro support: __MWERKS__ defined.");
  25. # elif (defined __SUNPRO_CC && __SUNPRO_CC < 0x5130)
  26. BOOST_ERROR("No variadic macro support: __SUNPRO_CC defined below version 12.3.");
  27. # elif defined __HP_aCC && !defined __EDG__
  28. BOOST_ERROR("No variadic macro support: __HP_aCC defined and __EDG__ not defined.");
  29. # elif defined __MRC__
  30. BOOST_ERROR("No variadic macro support: __MRC__ defined.");
  31. # elif defined __SC__
  32. BOOST_ERROR("No variadic macro support: __SC__ defined.");
  33. # elif defined __IBMCPP__
  34. BOOST_ERROR("No variadic macro support: __IBMCPP__ defined.");
  35. # elif defined __PGI
  36. BOOST_ERROR("No variadic macro support: __PGI defined.");
  37. # /* VC++ (C/C++) */
  38. # elif defined _MSC_VER && _MSC_VER >= 1400 && (!defined __EDG__ || defined(__INTELLISENSE__)) && !defined __clang__
  39. # /* Wave (C/C++), GCC (C++) */
  40. # elif defined __WAVE__ && __WAVE_HAS_VARIADICS__ || defined __GNUC__ && __GXX_EXPERIMENTAL_CXX0X__
  41. # /* EDG-based (C/C++), GCC (C), and unknown (C/C++) */
  42. # elif !defined __cplusplus && __STDC_VERSION__ < 199901L
  43. # if BOOST_COMP_GNUC >= BOOST_VERSION_NUMBER(4,3,0)
  44. BOOST_ERROR("No variadic macro support for gcc >= 4.3: __STDC_VERSION__ is less than 199901L.");
  45. # else
  46. BOOST_ERROR("No variadic macro support: __STDC_VERSION__ is less than 199901L.");
  47. # endif
  48. # elif defined __cplusplus && __cplusplus < 201103L
  49. # if BOOST_COMP_GNUC >= BOOST_VERSION_NUMBER(4,3,0)
  50. BOOST_ERROR("No variadic macro support for g++ >= 4.3: __cplusplus is less than 201103L.");
  51. # else
  52. BOOST_ERROR("No variadic macro support: __cplusplus is less than 201103L.");
  53. # endif
  54. # endif
  55. #endif
  56. return boost::report_errors();
  57. }