旧的C stdio工具提供了一种使用vprintf
工具传递可变参数集的方法。
是否有类似的方法传递C ++ 0x可变参数模板参数包而不用扩展它?
如果你有一个带有可变参数模板参数包的派生类构造函数,并且只需要将它传递给基类构造函数,而不是解压缩它,那么这可能很有用。
例如:
template <class T, class... Args>
Base::Base(const T& v, const Args&... args)
{
/*...expand args here ....*/
}
template <class T, class... Args>
Derived::Derived(const T& v, const Args&... args) : Base(v, args)
{
/*...don't expand args...*/
}
我认为您可以简单地传递args
参数包而不扩展它,通过在args之后排除...
,但这只会导致GCC 4.3上的编译器错误:
error: parameter packs not expanded with `...'
那么可以传递参数包而不扩展它吗?
答案 0 :(得分:6)
我不明白扩展是一个问题:在Base构造函数中不会扩展参数只是重新打包吗?我相信使用args...
会按预期工作。