![]() System : Linux absol.cf 5.4.0-198-generic #218-Ubuntu SMP Fri Sep 27 20:18:53 UTC 2024 x86_64 User : www-data ( 33) PHP Version : 7.4.33 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare, Directory : /usr/include/boost/proto/detail/ |
Upload File : |
/////////////////////////////////////////////////////////////////////////////// /// \file template_arity.hpp /// Replace all nodes stored by reference by nodes stored by value. // // Copyright 2011 Eric Niebler. 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) // // This file is based on a similar one in MPL from Aleksey Gurtovoy. #ifndef BOOST_PROTO_DETAIL_TEMPLATE_ARITY_HPP_EAN_2011_05_07 #define BOOST_PROTO_DETAIL_TEMPLATE_ARITY_HPP_EAN_2011_05_07 // Somewhat indirect definition of BOOST_PROTO_TEMPLATE_ARITY_PARAM is // to overcome a shortcoming of the Wave tool used to generate the // pre-preprocessed headers. #define BOOST_PROTO_TEMPLATE_ARITY_PARAM BOOST_PROTO_TEMPLATE_ARITY_PARAM2 #define BOOST_PROTO_TEMPLATE_ARITY_PARAM2(param) #if defined(BOOST_PROTO_EXTENDED_TEMPLATE_PARAMETERS_MATCHING) || \ (defined(__WAVE__) && defined(BOOST_PROTO_CREATE_PREPROCESSED_FILES)) #include <boost/preprocessor/cat.hpp> #include <boost/preprocessor/inc.hpp> #include <boost/preprocessor/iteration/iterate.hpp> #include <boost/preprocessor/repetition/enum_params.hpp> #include <boost/mpl/int.hpp> #include <boost/proto/proto_fwd.hpp> #undef BOOST_PROTO_TEMPLATE_ARITY_PARAM2 #define BOOST_PROTO_TEMPLATE_ARITY_PARAM2(param) , param namespace boost { namespace proto { namespace detail { sized_type<1>::type template_arity_helper(...); // Other overloads generated by the preprocessor #include <boost/proto/detail/template_arity_helper.hpp> template<typename F, int N, int Size> struct template_arity_impl2 : mpl::int_<Size - 1> {}; template<typename F, int N = BOOST_PROTO_MAX_ARITY> struct template_arity : template_arity_impl2< F , N , sizeof(detail::template_arity_helper((F **)0, (mpl::int_<N> *)0)) > {}; template<typename F, int N> struct template_arity_impl2<F, N, 1> : template_arity<F, N-1> {}; template<typename F> struct template_arity_impl2<F, 0, 1> : mpl::int_<-1> {}; }}} #endif // BOOST_PROTO_EXTENDED_TEMPLATE_PARAMETERS_MATCHING #endif // BOOST_PROTO_DETAIL_TEMPLATE_ARITY_HPP_EAN_2011_05_07