From: Markus Schöpflin (markus.schoepflin_at_[hidden])
Date: 2002-03-19 04:03:26


Hi there,

I'm trying to use the BPL for the following and I'm kind of stuck.

#include <boost/preprocessor.hpp>

// This creates a name for a function type, given the name of a function.
#define MAKE_FUNCTION_TYPE_NAME(f_name) BOOST_PP_CAT(f_name,_type)

// This creates a typedef for a function with n parameters.
#define MAKE_TYPEDEF_N(ret_type,f_name,n_params) \
typedef ret_type f_name(MAKE_FUNCTION_TYPE_NAME(f_name)) (BOOST_PP_ENUM_PARAMS(n_params,param))

#define TYPEDEF_0(ret_type,f_name) MAKE_TYPEDEF_N(ret_type,f_name,0)
#define TYPEDEF_1(ret_type,f_name,param0) MAKE_TYPEDEF_N(ret_type,f_name,1)

I would like to use it like this:

TYPEDEF_0(void, foo) -> typedef void foo(foo_type) ()

This works ok. But the one argument version gives me

TYPEDEF_1(void, bar, int) -> typedef void bar(bar_type) ( param0) instead of typedef void bar(bar_type) ( int).

Is it somehow possible to expand the generated parameter list to get the desired result?

TIA, Markus