1 # /* ************************************************************************** 2 # * * 3 # * (C) Copyright Edward Diener 2014. 4 # * Distributed under the Boost Software License, Version 1.0. (See 5 # * accompanying file LICENSE_1_0.txt or copy at 6 # * http://www.boost.org/LICENSE_1_0.txt) 7 # * * 8 # ************************************************************************** */ 9 # 10 # /* See http://www.boost.org for most recent version. */ 11 # 12 #ifndef BOOST_PREPROCESSOR_DETAIL_IS_EMPTY_HPP 13 #define BOOST_PREPROCESSOR_DETAIL_IS_EMPTY_HPP 14 15 #include <boost/preprocessor/punctuation/is_begin_parens.hpp> 16 17 #if BOOST_PP_VARIADICS_MSVC 18 19 # pragma warning(once:4002) 20 21 #define BOOST_PP_DETAIL_IS_EMPTY_IIF_0(t, b) b 22 #define BOOST_PP_DETAIL_IS_EMPTY_IIF_1(t, b) t 23 24 #else 25 26 #define BOOST_PP_DETAIL_IS_EMPTY_IIF_0(t, ...) __VA_ARGS__ 27 #define BOOST_PP_DETAIL_IS_EMPTY_IIF_1(t, ...) t 28 29 #endif 30 31 #if BOOST_PP_VARIADICS_MSVC && _MSC_VER <= 1400 32 33 #define BOOST_PP_DETAIL_IS_EMPTY_PROCESS(param) \ 34 BOOST_PP_IS_BEGIN_PARENS \ 35 ( \ 36 BOOST_PP_DETAIL_IS_EMPTY_NON_FUNCTION_C param () \ 37 ) \ 38 /**/ 39 40 #else 41 42 #define BOOST_PP_DETAIL_IS_EMPTY_PROCESS(...) \ 43 BOOST_PP_IS_BEGIN_PARENS \ 44 ( \ 45 BOOST_PP_DETAIL_IS_EMPTY_NON_FUNCTION_C __VA_ARGS__ () \ 46 ) \ 47 /**/ 48 49 #endif 50 51 #define BOOST_PP_DETAIL_IS_EMPTY_PRIMITIVE_CAT(a, b) a ## b 52 #define BOOST_PP_DETAIL_IS_EMPTY_IIF(bit) BOOST_PP_DETAIL_IS_EMPTY_PRIMITIVE_CAT(BOOST_PP_DETAIL_IS_EMPTY_IIF_,bit) 53 #define BOOST_PP_DETAIL_IS_EMPTY_NON_FUNCTION_C(...) () 54 55 #endif /* BOOST_PREPROCESSOR_DETAIL_IS_EMPTY_HPP */ 56