C++ 带boost的变量参数列表?

C++ 带boost的变量参数列表?,c++,boost,variadic-functions,C++,Boost,Variadic Functions,我想写一个带有变量参数列表的函数。我想探索我的选择。我很确定我是通过一个boost模板类来实现的,这个类就是为此而设计的,但是我想不起它的名字了?有人能告诉我吗?还是我梦到的! 谢谢如果您只需要接受相同类型的参数的可变计数,那么使用容器将是常见的做法。但是,可以使用以下方法轻松创建容器: 如果您真的想提供类型安全的变量函数(不使用C++0x特性),可以提供帮助。一个通用示例: #define OUT(z, n, name) << name ## n #define MAKE_FUN

我想写一个带有变量参数列表的函数。我想探索我的选择。我很确定我是通过一个boost模板类来实现的,这个类就是为此而设计的,但是我想不起它的名字了?有人能告诉我吗?还是我梦到的!
谢谢

如果您只需要接受相同类型的参数的可变计数,那么使用容器将是常见的做法。但是,可以使用以下方法轻松创建容器:

如果您真的想提供类型安全的变量函数(不使用C++0x特性),可以提供帮助。一个通用示例:

#define OUT(z, n, name) << name ## n

#define MAKE_FUNC(z, n, unused)                                     \
    template<class T BOOST_PP_ENUM_TRAILING_PARAMS(n, class T)>     \
    void func(T t BOOST_PP_ENUM_TRAILING_BINARY_PARAMS(n, T, t) ) { \
        std::cout << t BOOST_PP_REPEAT(n, OUT, t) << std::endl;     \
    }

BOOST_PP_REPEAT(9, MAKE_FUNC, ~) // generates func() versions taking 1-10 arguments
func(1, "ab", 'c'); // prints "1abc"

#define OUT(z,n,name)你是指变量参数计数,但一种类型,还是任意类型?我不确定库提供了什么,我似乎无法重新定位它,我想这是对va_列表的某种改进-可能是类型安全你的函数是否只需要接受一种类型的参数?是的,它只需要一种类型,但是可变计数。
op() << arg1 << arg2 << arg3;
#define OUT(z, n, name) << name ## n

#define MAKE_FUNC(z, n, unused)                                     \
    template<class T BOOST_PP_ENUM_TRAILING_PARAMS(n, class T)>     \
    void func(T t BOOST_PP_ENUM_TRAILING_BINARY_PARAMS(n, T, t) ) { \
        std::cout << t BOOST_PP_REPEAT(n, OUT, t) << std::endl;     \
    }

BOOST_PP_REPEAT(9, MAKE_FUNC, ~) // generates func() versions taking 1-10 arguments
func(1, "ab", 'c'); // prints "1abc"