可变参数模板:传递参数包而不进行扩展

Cha*_*l72 4 c++ variadic-functions c++11

旧的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...*/
}
Run Code Online (Sandbox Code Playgroud)

我认为您可以简单地传递args参数包而不扩展它,通过排除...args之后,但这只会导致GCC 4.3上的编译器错误:

 error: parameter packs not expanded with `...'
Run Code Online (Sandbox Code Playgroud)

那么可以传递参数包而不扩展它吗?

ice*_*ime 6

我不明白扩展是一个问题:扩展参数不会只是在Base构造函数中重新打包?我相信使用args...将按预期工作.