// Copyright Cromwell D. Enage 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) #ifndef BOOST_PARAMETER_PREPROCESSOR_NO_SPEC_HPP #define BOOST_PARAMETER_PREPROCESSOR_NO_SPEC_HPP #include #include // Exapnds to a variadic function header that is enabled if and only if all // its arguments are tagged arguments. All arguments are accessible via args // and keywords only. #define BOOST_PARAMETER_NO_SPEC_FUNCTION(result, name) \ BOOST_PARAMETER_NO_SPEC_FUNCTION_HEAD(result, name, 0) \ BOOST_PARAMETER_NO_SPEC_FUNCTION_IMPL_HEAD(name, 0); \ BOOST_PARAMETER_NO_SPEC_FUNCTION_OVERLOAD(name, name, 0, 0) \ BOOST_PARAMETER_NO_SPEC_FUNCTION_IMPL_HEAD(name, 0) /**/ #include #include // Helper macro for BOOST_PARAMETER_NO_SPEC_MEMBER_FUNCTION, // BOOST_PARAMETER_NO_SPEC_CONST_MEMBER_FUNCTION, // BOOST_PARAMETER_NO_SPEC_FUNCTION_CALL_OPERATOR, and // and BOOST_PARAMETER_NO_SPEC_CONST_FUNCTION_CALL_OPERATOR. #define BOOST_PARAMETER_NO_SPEC_MEMBER_FUNCTION_AUX(result, name, impl, c) \ BOOST_PARAMETER_NO_SPEC_FUNCTION_HEAD(result, impl, c) \ BOOST_PARAMETER_NO_SPEC_FUNCTION_OVERLOAD( \ name \ , impl \ , BOOST_PP_IF(BOOST_PARAMETER_MEMBER_FUNCTION_IS_STATIC(impl), 0, 1) \ , c \ ) \ BOOST_PARAMETER_NO_SPEC_FUNCTION_IMPL_HEAD(impl, c) \ BOOST_PP_EXPR_IF(c, const) /**/ // Exapnds to a variadic member function header that is enabled if and only if // all its arguments are tagged arguments. All arguments are accessible via // args and keywords only. #define BOOST_PARAMETER_NO_SPEC_MEMBER_FUNCTION(result, name) \ BOOST_PARAMETER_NO_SPEC_MEMBER_FUNCTION_AUX(result, name, name, 0) /**/ // Exapnds to a const-qualified variadic member function header that is // enabled if and only if all its arguments are tagged arguments. All // arguments are accessible via args and keywords only. #define BOOST_PARAMETER_NO_SPEC_CONST_MEMBER_FUNCTION(result, name) \ BOOST_PARAMETER_NO_SPEC_MEMBER_FUNCTION_AUX(result, name, name, 1) /**/ // Exapnds to a variadic function call operator header that is enabled if and // only if all its arguments are tagged arguments. All arguments are // accessible via args and keywords only. #define BOOST_PARAMETER_NO_SPEC_FUNCTION_CALL_OPERATOR(result) \ BOOST_PARAMETER_NO_SPEC_MEMBER_FUNCTION_AUX( \ result, operator(), operator, 0 \ ) /**/ // Exapnds to a const-qualified variadic function call operator header that is // enabled if and only if all its arguments are tagged arguments. All // arguments are accessible via args and keywords only. #define BOOST_PARAMETER_NO_SPEC_CONST_FUNCTION_CALL_OPERATOR(result) \ BOOST_PARAMETER_NO_SPEC_MEMBER_FUNCTION_AUX( \ result, operator(), operator, 1 \ ) /**/ #endif // include guard