下面的代码中初始化std::stop_callback
的正确方法是什么?
class watch_dog
{
public:
watch_dog(std::stop_token token) :
m_token(token),
m_callback(m_token, std::bind(&watch_dog::callback_proc, this))
{
}
private:
void callback_proc()
{
std::cout << "an operation has completed." << std::endl;
}
std::stop_token m_token;
std::stop_callback m_callback;
};
C++中有没有一种方法可以不使用std::stop_callback
类来注册回调函数?
如何确定要将m_callback
声明为的std::bind
的类型
std::stop_callback<type of my std::bind> m_callback;
?
1条答案
按热度按时间wmomyfyw1#
stop_callback
未被类型擦除;它是一个模板,存储了你要调用的可调用对象的确切类型。如果你想擦除存储的类型,那么它存储的可调用对象需要执行擦除操作。比如std::function
:它应该能够存储
std::bind
的结果。您甚至可以创建一个方便的模板别名: