问题很简单 - 我无法在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下编译,我也不知道为什么。
答案 0 :(得分:1)
如常使用普通模板参数包怎么样?比如说。
template<typename T, typename... argsT>
T *allocate(argsT... args)
{
return new T(std::forward<argsT>(args)...);
}