1
2// (C) Copyright Edward Diener 2019
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).
6
7#if !defined(BOOST_TTI_DETAIL_MACRO_FUN_TEMPLATE_HPP)
8#define BOOST_TTI_DETAIL_MACRO_FUN_TEMPLATE_HPP
9
10#include <boost/preprocessor/comparison/equal.hpp>
11#include <boost/preprocessor/control/iif.hpp>
12#include <boost/preprocessor/logical/and.hpp>
13#include <boost/preprocessor/variadic/elem.hpp>
14#include <boost/preprocessor/variadic/size.hpp>
15#include <boost/preprocessor/variadic/to_array.hpp>
16#include <boost/preprocessor/detail/is_binary.hpp>
17#include <boost/tti/detail/dmacro_fve.hpp>
18
19#define BOOST_TTI_DETAIL_FUN_TEMPLATE_VARIADIC_TO_ARRAY(...) \
20 BOOST_PP_IIF \
21 ( \
22 BOOST_PP_AND \
23 ( \
24 BOOST_PP_EQUAL \
25 ( \
26 BOOST_PP_VARIADIC_SIZE(__VA_ARGS__), \
27 1 \
28 ), \
29 BOOST_PP_IS_BINARY \
30 ( \
31 BOOST_PP_VARIADIC_ELEM(0,__VA_ARGS__) \
32 ) \
33 ), \
34 BOOST_TTI_DETAIL_FIRST_VARIADIC_ELEM, \
35 BOOST_PP_VARIADIC_TO_ARRAY \
36 ) \
37 (__VA_ARGS__) \
38/**/
39
40#endif // BOOST_TTI_DETAIL_MACRO_FUN_TEMPLATE_HPP
41

source code of boost/libs/tti/include/boost/tti/detail/dmacro_fun_template.hpp