【发布时间】:2020-11-17 00:48:27
【问题描述】:
在接收和存储 lambda 函数时,我通常会看到这样的情况:
struct foo {
std::function<void()> myFunc;
template<typename F>
void foo(F&& func) {
myFunc = std::move(func);
}
};
上面的表格比下面的表格有什么优势吗?
struct foo {
std::function<void()> myFunc;
void foo(std::function<void()>&& func) {
myFunc = std::move(func);
}
};
我正在使用 C++17。
【问题讨论】:
-
请注意:更直接可比较的场景是第二个示例使用按值传递:
void foo(std::function<void()> func) ...
标签: c++ templates lambda arguments c++17