英文:
How to reset an std::function?
问题
std::function
可以为空,并且可以转换为 bool
以测试它是否有目标。但是,如果在分配了内容之后要将其设置为 null,该怎么做呢?
int main()
{
std::function<void()> f = []() { return 4; };
f = nullptr; // 重置为空,回到默认构造时的状态。
}
英文:
std::function
can be empty, and it's convertible to bool
to test if it has a target or not. But, how to set it to null after you've assigned something to it?
int main()
{
std::function<void()> f = []() { return 4; };
// how to reset to null, to it's initial state when default constructed.
}
答案1
得分: 5
你可以选择:
-
将
nullptr
赋给它:f = nullptr;
-
将一个空的
function
赋给它:f = std::function<void()>{}; // 或者: f = decltype(f){};
-
与另一个空的
function
进行swap()
:std::function<void()>{}.swap(f); // 或者: decltype(f){}.swap(f);
英文:
You can either:
-
assign
nullptr
to it:f = nullptr;
-
assign an empty
function
to it:f = std::function<void()>{}; // or: f = decltype(f){};
-
swap()
it with another emptyfunction
:std::function<void()>{}.swap(f); // or: decltype(f){}.swap(f);
答案2
得分: 5
The simplest way, I use it:
f = {};
英文:
The simplest way, I use it:
f = {};
https://godbolt.org/z/hzEq3xo4e
#include <functional>
int main() {
std::function<void()> f = []() { return 4; };
f = {};
}
答案3
得分: 4
将 nullptr
分配给它以使其为空。
f = nullptr;
英文:
Assign nullptr
to it to make it empty.
f = nullptr;
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论