如何命名单个函数参数包?
How to name a single function-parameter-pack?
问题很简单 - 我无法在 ISO C++ 文档中找到更好的示例,然后是这个:
template<class ... targs> void func(targs ... args);
但即便如此我也找不到令人满意的解释。这不是我要找的,因为我不关心参数类型。
我想写这样的东西:
void func(auto ... args)
{
func1(args...); //here 'args' to be expanded
}
但是上面的或其他类似的表示不会在 Clang 下编译。
知道为什么以及如何完成吗?也欢迎引用最新的 ISO C++ 标准。
我想做的是通过我自己的函数实现 'new' 运算符行为,为此我需要传递具有可变大小的构造函数参数,如下所示:
struct x_new
{
template<class T>
inline T *allocate(... arg)
{
return new T(arg...);
}
};
暂时无法在 Clang 下编译,我不知道为什么。
像往常一样使用普通模板参数包怎么样?比如
template<typename T, typename... argsT>
T *allocate(argsT... args)
{
return new T(std::forward<argsT>(args)...);
}
问题很简单 - 我无法在 ISO C++ 文档中找到更好的示例,然后是这个:
template<class ... targs> void func(targs ... args);
但即便如此我也找不到令人满意的解释。这不是我要找的,因为我不关心参数类型。
我想写这样的东西:
void func(auto ... args)
{
func1(args...); //here 'args' to be expanded
}
但是上面的或其他类似的表示不会在 Clang 下编译。
知道为什么以及如何完成吗?也欢迎引用最新的 ISO C++ 标准。
我想做的是通过我自己的函数实现 'new' 运算符行为,为此我需要传递具有可变大小的构造函数参数,如下所示:
struct x_new
{
template<class T>
inline T *allocate(... arg)
{
return new T(arg...);
}
};
暂时无法在 Clang 下编译,我不知道为什么。
像往常一样使用普通模板参数包怎么样?比如
template<typename T, typename... argsT>
T *allocate(argsT... args)
{
return new T(std::forward<argsT>(args)...);
}