-// (C) Copyright Edward Diener 2011-2015
+// (C) Copyright Edward Diener 2011-2015,2019
// Use, modification and distribution are subject to 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).
#include <boost/vmd/is_empty.hpp>
#include <boost/preprocessor/tuple/elem.hpp>
#include <boost/preprocessor/variadic/elem.hpp>
+#include <boost/preprocessor/variadic/has_opt.hpp>
#include <boost/detail/lightweight_test.hpp>
int main()
#if BOOST_PP_VARIADICS
+ #define USE_VA_OPT BOOST_PP_VARIADIC_HAS_OPT()
+
#define SMACRO() someoutput
#define EMACRO(x) otheroutput x
#define FMACRO4() ( any_number_of_tuple_elements )
#define FMACRO5(param) ( any_number_of_tuple_elements )
-#if BOOST_VMD_MSVC
+#if USE_VA_OPT
+
+ #define FMACRO6(param1,param2) ( any_number_of_tuple_elements )
+
+ BOOST_TEST(!BOOST_VMD_IS_EMPTY(FMACRO4));
+ BOOST_TEST(!BOOST_VMD_IS_EMPTY(FMACRO5));
+ BOOST_TEST(!BOOST_VMD_IS_EMPTY(FMACRO6));
+
+#elif BOOST_VMD_MSVC
#define FMACRO6(param1,param2) ( any_number_of_tuple_elements )
BOOST_TEST(!BOOST_VMD_IS_EMPTY(FMACRO5));
#endif
-
+
#else
BOOST_ERROR("No variadic macro support");