【发布时间】:2020-10-13 18:55:17
【问题描述】:
我想保存一个带有其状态的通用可调用对象以供以后使用。请参阅下面的示例代码。我可能可以使用std::function 或std::bind 来实现这一点,但我不知道什么是最好的。另请注意,在下面示例的main() 中,capturedInt 必须保存在可调用的状态中。
有哪些可能性:
makeCallable(fun, args...) { ... }CallableType
模板类服务 { 民众: 模板 服务(Fn&& fun, Args&&... args) { m_callable = makeCallable(fun, args...); } 跑步() { m_callable(); } CallableType m_callable; }; // 模板推导指南 (C++17) 模板 服务(Fn&& fun, Args&&... args) -> 服务<:invoke_result_t>, std::decay_t ...>>; 主函数() { 服务* s = nullptr; { int 捕获Int = 5; s = new Service([capturedInt]() { std::cout 运行(); }
【问题讨论】:
标签: c++ generics stl c++17 callable