gpt4 book ai didi

c++11 - 如何将前 N 个参数传递给 C++ 函数

转载 作者:行者123 更新时间:2023-12-03 01:14:35 26 4
gpt4 key购买 nike

我有一个这样的函数:

void loadData(std::function<void (std::string, std::string, std::string)> callback)
{
// data loading stuff
callback(body, subject, header);
}

问题是我不一定需要在回调函数中使用 subjectheader 。现在我是这样处理的:

loadData([](std::string body, std::string, std::string){
std::cout << body;
})

我想替换它

loadData([](std::string body){
std::cout << body;
})

并自动向回调函数传递它能够接受的尽可能多的参数。我不想为所有 3 个可能的参数计数手动重载 loadData 函数。我也不想在调用站点上使用任何更复杂的 lambda 语法,因为我的库应该清晰供其他人使用。使用 C++ STL 和 Boost 可以实现这一点吗?

最佳答案

使用 ... 忽略以下参数怎么样?

loadData([](std::string body, ...){
std::cout << body;
})

<小时/>正如 StoryTeller 所指出的(谢谢!),重要类型可能不支持省略号的使用(有关更多详细信息,请参阅 [expr.call]p9)。

为了避免这个问题,如果你能使用C++14,你可以使用auto ...(更好的auto && ...以避免不必要的复制;谢谢雅克)。

loadData([](std::string body, auto && ...){
std::cout << body;
})

关于c++11 - 如何将前 N 个参数传递给 C++ 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46776035/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com