2 // (C) Copyright Edward Diener 2011-2015
3 // Use, modification and distribution are subject to the Boost Software License,
4 // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
5 // http://www.boost.org/LICENSE_1_0.txt).
7 #if !defined(BOOST_VMD_DETAIL_IS_EMPTY_HPP)
8 #define BOOST_VMD_DETAIL_IS_EMPTY_HPP
10 #include <boost/preprocessor/punctuation/is_begin_parens.hpp>
14 # pragma warning(once:4002)
16 #define BOOST_VMD_DETAIL_IS_EMPTY_IIF_0(t, b) b
17 #define BOOST_VMD_DETAIL_IS_EMPTY_IIF_1(t, b) t
21 #define BOOST_VMD_DETAIL_IS_EMPTY_PROCESS(param) \
22 BOOST_PP_IS_BEGIN_PARENS \
24 BOOST_VMD_DETAIL_IS_EMPTY_NON_FUNCTION_C param () \
30 #define BOOST_VMD_DETAIL_IS_EMPTY_PROCESS(...) \
31 BOOST_PP_IS_BEGIN_PARENS \
33 BOOST_VMD_DETAIL_IS_EMPTY_NON_FUNCTION_C __VA_ARGS__ () \
41 #define BOOST_VMD_DETAIL_IS_EMPTY_IIF_0(t, ...) __VA_ARGS__
42 #define BOOST_VMD_DETAIL_IS_EMPTY_IIF_1(t, ...) t
44 #define BOOST_VMD_DETAIL_IS_EMPTY_PROCESS(...) \
45 BOOST_PP_IS_BEGIN_PARENS \
47 BOOST_VMD_DETAIL_IS_EMPTY_NON_FUNCTION_C __VA_ARGS__ () \
51 #endif /* BOOST_VMD_MSVC */
53 #define BOOST_VMD_DETAIL_IS_EMPTY_PRIMITIVE_CAT(a, b) a ## b
54 #define BOOST_VMD_DETAIL_IS_EMPTY_IIF(bit) \
55 BOOST_VMD_DETAIL_IS_EMPTY_PRIMITIVE_CAT(BOOST_VMD_DETAIL_IS_EMPTY_IIF_,bit) \
58 #define BOOST_VMD_DETAIL_IS_EMPTY_NON_FUNCTION_C(...) ()
59 #define BOOST_VMD_DETAIL_IS_EMPTY_GEN_ZERO(...) 0
61 #endif /* BOOST_VMD_DETAIL_IS_EMPTY_HPP */