Imported Upstream version 1.72.0
[platform/upstream/boost.git] / boost / preprocessor / facilities / is_empty_variadic.hpp
index eee4062..77ebf6d 100644 (file)
@@ -1,6 +1,6 @@
 # /* **************************************************************************
 #  *                                                                          *
-#  *     (C) Copyright Edward Diener 2014.
+#  *     (C) Copyright Edward Diener 2014,2019.
 #  *     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)
 /**/
 #define BOOST_PP_IS_EMPTY_ZERO(param) 0
 # else
+# if defined(__cplusplus) && __cplusplus > 201703L
+# include <boost/preprocessor/variadic/has_opt.hpp>
 #define BOOST_PP_IS_EMPTY(...) \
     BOOST_PP_DETAIL_IS_EMPTY_IIF \
       ( \
+      BOOST_PP_VARIADIC_HAS_OPT() \
+      ) \
+      ( \
+      BOOST_PP_IS_EMPTY_OPT, \
+      BOOST_PP_IS_EMPTY_NO_OPT \
+      ) \
+    (__VA_ARGS__) \
+/**/
+#define BOOST_PP_IS_EMPTY_FUNCTION2(...) \
+    __VA_OPT__(0,) 1 \
+/**/
+#define BOOST_PP_IS_EMPTY_FUNCTION(...) \
+    BOOST_PP_IS_EMPTY_FUNCTION2(__VA_ARGS__) \
+/**/
+#define BOOST_PP_IS_EMPTY_OPT(...) \
+    BOOST_PP_VARIADIC_HAS_OPT_ELEM0(BOOST_PP_IS_EMPTY_FUNCTION(__VA_ARGS__),) \
+/**/
+# else
+#define BOOST_PP_IS_EMPTY(...) \
+    BOOST_PP_IS_EMPTY_NO_OPT(__VA_ARGS__) \
+/**/
+# endif /* defined(__cplusplus) && __cplusplus > 201703L */
+#define BOOST_PP_IS_EMPTY_NO_OPT(...) \
+    BOOST_PP_DETAIL_IS_EMPTY_IIF \
+      ( \
       BOOST_PP_IS_BEGIN_PARENS \
         ( \
         __VA_ARGS__ \