【问题标题】:What is the difference between boost::system::error_code and boost::system::error_code::value()?boost::system::error_code 和 boost::system::error_code::value() 有什么区别?
【发布时间】:2021-05-21 17:01:24
【问题描述】:

例如,下面的代码编译。 test1 是否总是等于 test2

boost::system::error_code ec = foo()
bool test1 = ec.value() == boost::asio::error::would_block;
bool test2 = ec == boost::asio::error::would_block;

【问题讨论】:

    标签: c++ boost boost-asio


    【解决方案1】:

    没有。

    类别将不匹配。事实上,将两者连接起来非常棘手,因为类别是全局单例,但由于静态不同的类型,它们无法共享。

    Boost 类型存在的原因是因为它们早于各种平台上的标准化/供应商实施

    如果您需要将 boost::system::error_code 作为 std::error_code:

    传递,请参阅此处了解如何使用 shim 类别来混合这两种类型

    Is it possible to convert a boost::system::error_code to a std:error_code?

    使用value() 不是很安全,因为它只是丢弃所有类别信息并返回处理错误int。这似乎很长一段时间都像一个魅力,直到你遇到来自不同类别的错误。

    【讨论】:

      猜你喜欢
      • 2014-01-29
      • 2015-03-14
      • 1970-01-01
      • 2020-01-12
      • 1970-01-01
      • 2012-04-27
      • 2012-08-25
      • 1970-01-01
      • 2011-11-28
      相关资源
      最近更新 更多