
1.34 will feature new macros in Boost.Parameter that have a significantly improved interface. Some of the syntax is demonstrated in this test: http://cvs.sourceforge.net/viewcvs.py/*checkout*/boost/boost/libs/parameter/... They also support in/out parameter overload generation, like what you have here. The syntax for this will be: BOOST_PARAMETER_FUNCTION((int), f, tag, (required (out(tester), *) ^^^ (name, *) ) ) Cromwell Enage wrote:
I've implemented a new macro, BOOST_PARAMETER_FUN2, that uses approach #3 mentioned in <http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2002/n1385.htm>. For example, the BGL implementation of Dijkstra's algorithm <http://www.boost.org/libs/graph/doc/dijkstra_shortest_paths.html> can now be declared as:
struct dijkstra_parameters : parameter::parameters<...> { }
BOOST_PARAMETER_FUN2( void , dijkstra_shortest_paths , (0)(0)(1)(1)(0)(0)(0)(0)(0)(0)(1)(1) , 2 , dijkstra_parameters ) { ... }
Each element in the Boost.Preprocessor sequence corresponds to a positional argument. If the element is set to 1, the argument is bound to an "out" parameter; otherwise it is bound to an "in" parameter. The size of the sequence is, of course, the total number of arguments accepted by the function.
-- Daniel Wallin