2011-06-26 13:07:20 +00:00
< html >
< head >
< title > BOOST_PP_OVERLOAD</ title >
< link rel = "stylesheet" type = "text/css" href = "../styles.css" >
</ head >
< body >
< div style = "margin-left: 0px;" > The < b > BOOST_PP_OVERLOAD</ b > variadic macro expands to the name of a non-variadic macro having a given number of parameters.< br >
</ div >
< h4 > Usage</ h4 >
2013-04-14 01:46:09 +00:00
< div class = "code" > < b > BOOST_PP_OVERLOAD</ b > (< i > prefix</ i > ,...) < a href = "../topics/variadic_macros.html#VNotation" target = "_self" >< sup > (v)</ sup ></ a >< br >
2011-06-26 13:07:20 +00:00
</ div >
< h4 > Arguments</ h4 >
< dl >
< dt > prefix< br >
</ dt >< dd >
The prefix of the non-variadic macro name.
</ dd >< dt > ...< br >
</ dt >< dd >< i >
Variadic data</ i > . The number of variadic data
elements, as determined by BOOST_PP_VARIADIC_SIZE, is appended to the
prefix to form the output non-variadic macro name.< br >
</ dd >
</ dl >
< h4 > Remarks</ h4 >
< div > This macro creates a macro name which depends on the number of elements of variadic data. It should be used in the form of < br >
BOOST_PP_OVERLOAD(MACRO_NAME_,__VA_ARGS__)(__VA_ARGS__) in order to
call a non-variadic macro taking a given number of variadic data
elements as non-variadic arguments. In this way one can invoke a
variadic macro with a variable number of parameters which calls one of
a series of non-variadic macros doing very similar things.
</ div >< b > Requirements</ b >
< div > < b > Header:</ b > < a href = "../headers/facilities/overload.html" > < boost/preprocessor/facilities/overload.hpp> </ a >
</ div >
< h4 > Sample Code</ h4 >
< div >
< pre > #include < < a href = "../headers/facilities/overload.html" > boost/preprocessor/facilities/overload.hpp</ a > > < br > #include < < a href = "../headers/cat.html" > boost/preprocessor/cat.hpp</ a > > < br > #include < < a href = "../headers/facilities/empty.html" > boost/preprocessor/facilities/empty.hpp</ a > > < br > #include < < a href = "../headers/arithmetic/add.html" > boost/preprocessor/arithmetic/add.hpp</ a > > < br >< br > #define MACRO_1(number) MACRO_2(number,10)< br > #define MACRO_2(number1,number2) < a href = "add.html" > BOOST_PP_ADD</ a > (number1,number2)< br >< br > #define MACRO_ADD_NUMBERS(...) < a href = "overload.html" > BOOST_PP_OVERLOAD</ a > (MACRO_,__VA_ARGS__)(__VA_ARGS__)< br >< br > // or for Visual C++< br >< br > #define MACRO_ADD_NUMBERS(...) \< br > < a href = "cat.html" > BOOST_PP_CAT</ a > (< a href = "overload.html" > BOOST_PP_OVERLOAD</ a > (MACRO_,__VA_ARGS__)(__VA_ARGS__),< a href = "empty.html" > BOOST_PP_EMPTY</ a > ())< br >< br > MACRO_ADD_NUMBERS(5) // output is 15< br > MACRO_ADD_NUMBERS(3,6) // output is 9< br ></ pre >
</ div >
< hr size = "1" >
2013-04-14 01:46:09 +00:00
< div style = "margin-left: 0px;" > < i ></ i >< i > © Copyright Edward Diener 2011,2013</ i > </ div >
2011-06-26 13:07:20 +00:00
< div style = "margin-left: 0px;" >
< p >< small > Distributed under the Boost Software License, Version 1.0.
(See accompanying file < a href = "../../../../LICENSE_1_0.txt" > LICENSE_1_0.txt</ a >
or copy at < a href = "http://www.boost.org/LICENSE_1_0.txt" > www.boost.org/LICENSE_1_0.txt</ a > )</ small ></ p >
</ div >
</ body >
</ html >