如果我将结构传递给vararg函数会发生什么?

Lor*_*one 8 c++ variadic-functions

void f(int count, ...){
    //whatever
}

struct somestruct{
    size_t a, b, c;
};

int main() {
    somestruct s;
    f(1, s);    //what is actually passed?
}
Run Code Online (Sandbox Code Playgroud)

是整个struct复制并传递到堆栈?如果是这样,复制构造函数被称为?指针是否通过?这样安全吗?

Joh*_*itb 2

是的,如果传递左值,则会完成左值到右值的转换,这意味着调用复制构造函数将对象复制到新副本中并将其作为参数传递。