Visual Studio or boost::asio bug?

Visual Studio or boost::asio bug?

本文关键字:asio bug boost Studio or Visual      更新时间:2023-10-16

我刚刚MSVC2015"升级"到更新 2 并遇到了boost::asio问题 12115...

我很高兴地说,boost issue 12115中描述的解决方法,即从basic_io_object.hpp的第 43 行中删除service_has_move可以很好地更改:

#if defined(BOOST_ASIO_HAS_MOVE)
...
static const bool value =
  sizeof(service_has_move::eval(
    static_cast<service_type*>(0),
    static_cast<implementation_type*>(0))) == 1;
...
#endif // defined(BOOST_ASIO_HAS_MOVE)

#if defined(BOOST_ASIO_HAS_MOVE)
...
static const bool value =
  sizeof(eval(
    static_cast<service_type*>(0),
    static_cast<implementation_type*>(0))) == 1;
...
#endif // defined(BOOST_ASIO_HAS_MOVE)

我不是编辑库的忠实粉丝,尤其是boost
那么有人可以告诉我这是否真的是一个boost问题,或者问题是否MSVC2015在更新 2 中更改其move行为?

仅供参考,原始代码在MSVC2015更新 1 和 MinGW 4.9.2(在 Windows 10 上)和 GCC 5.3.1(在 Fedora 上)下编译和工作正常,使用 boost 1.60.01.61.0
我目前正在使用boost 1.61.0boost issue 12115是在boost 1.60.0上提出的。

我认为谁有错是很明显的。如果您必须删除 boost 中的某些内容来解决此问题,那么 boost 有错,不是吗?宏BOOST_ASIO_HAS_MOVE是根据 boost 配置标头中的编译器检测定义的。显然,当您更新时,这些标头所依赖的编译器版本和其他信息不匹配,因此未定义您必须删除的命名空间。