boost - 无效的重载 boost::asio::io_service::run
问题描述
我一直面临在 Linux 中使用boost::asio::io_service::run的问题,与此非常相似:在 linux 下使用 boost::thread 创建一个 boost::asio 工作线程。
我看到这个问题的答案是“错误是 boost::asio::io_service::run 过载,在这种情况下你必须解决歧义。”
有人可以告诉我如何解决这种歧义吗?谢谢。
我在 RHEL 7.7 中,使用 Eclipse IDE 进行编码。我的代码段是:
std::vector<boost::thread> threadPool;
boost::assio::io_service IOService;
.
.
threadPool.pushback(boost::thread(boost::bind(&boost::asio::io_service::run, &IOService)));
我收到错误“'boost::asio::io_service::run' 的重载无效”
我看到boost::asio::io_service::run有两个重载:
std::size_t boost::asio::io_service::run()
std::size_t boost::asio::io_service::run(boost::system::error_code &ec)
我不知道如何解决歧义,因为它们具有相同的回报。如果我尝试添加这样的变量:
threadPool.pushback(boost::thread(boost::bind(&boost::asio::io_service::run(), &IOService)));
我收到错误消息:“无效的参数 'Candidates are unsigned long int run()'”,我不知道该怎么做。
有人可以教我这样一个困惑的白痴我该怎么办吗?是环境问题、链接问题还是声明问题?
编辑 1:使用 lambdas 会产生错误
'Address of overloaded function with no contextual type information'
这没有任何意义,我认为只是重申了函数的歧义。
此错误不会显示在详细说明 Make 结果的控制台窗口中,仅显示在错误窗口中。这让我觉得它纯粹是一个 IDE 语法检查类型错误?GCC 版本是 4.8.5。
解决方案
推荐阅读
- netsuite - 如何在套件表单(API 2.0)的选择字段中仅获取父项?
- python - 如果可选属性无效,JSON Schema 会抛出验证错误
- thymeleaf - Thymeleaf - 从选择列表中选择多个选项
- visual-studio-code - Visual Studio 代码烦人的自动启动
- android - 奇怪的绑定适配器点击监听行为kotlin android
- javascript - React webpack config:是否可以仅替换数组中一个插件的配置,而无需重置插件数组?
- mysql - mysql 选择加入第二行
- elasticsearch - ElasticSearch - 使用一个查询的结果作为另一个查询的过滤器
- c# - Directory.GetDirectories 顺序与 Directory.GetFiles 顺序
- mysql - 如何防止json数据输出按字母顺序排序并存储在mysql工作中?