小编Zen*_*337的帖子

获取第一个传递的可变参数的地址

#include <stdarg.h>

template<typename... Args> 
void Func(Args... args)
{
// WANT: Get the address of the first argument

// TRIED:
// va_list vargs = (char*)&(args);
// va_list vargs = (char*)&(args)...;
// va_list vargs = (char*)&(args...);

// GOT:
// 'args': parameter pack must be expanded in this context
}
Run Code Online (Sandbox Code Playgroud)

我正在编写一个接受 N 个参数并对所有参数执行某些操作的函数。为此,我想获取可变参数列表的第一个元素的地址。

之后,据我所知,va_arg宏取消引用指针并va_list以假定类型的大小移动类型对象

编辑:我可能可以做这样的事情:

template<typename... Args> 
void Func(int arg1, Args... args)
{
// Code
}
Run Code Online (Sandbox Code Playgroud)

但是,这会导致更多我不想要的代码行。

c++ variadic-functions

1
推荐指数
1
解决办法
427
查看次数

标签 统计

c++ ×1

variadic-functions ×1