如何命名单个函数参数包?

时间:2015-03-07 10:29:38

标签: c++ parameters clang iso pack

问题很简单 - 我无法在ISO C ++文档中找到更好的示例:

template<class ... targs> void func(targs ... args);

但即便如此,我也无法找到令人满意的解释。这不是我想要的,因为我不关心论证类型。

我想写这样的东西:

void func(auto ... args)
{
    func1(args...); //here 'args' to be expanded
}

但上述或其他类似的陈述不会在Clang下编译。

任何想法为什么以及如何做?此外,最新的ISO C ++标准也将受到欢迎。

我想要做的是实施新的&#39;我自己的函数的操作符行为,为此我需要传递可变大小的构造函数参数,如下所示:

struct x_new
{
    template<class T>
    inline T *allocate(... arg)
    {
        return new T(arg...);
    }
};

现在不能在Clang下编译,我也不知道为什么。

1 个答案:

答案 0 :(得分:1)

如常使用普通模板参数包怎么样?比如说。

template<typename T, typename... argsT>
T *allocate(argsT... args)
{
    return new T(std::forward<argsT>(args)...);
}