Boost C++ 库

...世界上最受尊敬和专业设计的 C++ 库项目之一。 Herb SutterAndrei Alexandrescu, C++ 编码标准

版本 1.53.0

版本 1.53.0

2013年2月4日 18:29 GMT

文档

下载
平台文件
unixboost_1_53_0.tar.bz2
boost_1_53_0.tar.gz
windowsboost_1_53_0.7z
boost_1_53_0.zip

新库

  • Atomic: C++11 风格的 atomic<>, 来自 Helge Bahmann,由 Tim Blechmann 维护。
  • Coroutine: 协程库,来自 Oliver Kowalke。
  • Lockfree: 无锁数据结构,来自 Tim Blechmann。
  • Multiprecision: 扩展精度算术类型,用于浮点、整数和有理算术,来自 John Maddock 和 Christopher Kormanyos。
  • Odeint: 求解常微分方程,来自 Karsten Ahnert 和 Mario Mulansky。

新闻

此版本包含对 Boost.Locale 中 #7743 号工单的修复。 更多详情,请参阅安全公告

更新的库

  • Algorithm:
    • 修复了注释中的非 ASCII 字符 (#7781)。
    • 更新了 Knuth-Morris-Pratt 文档 (#7656)。
  • Array:
    • 添加了对 boost::get 和 std::get 的支持 (#7652)
  • Asio:
    • 修复了一些 64 位到 32 位转换警告 (#7459)。
    • 修复了文档和注释中的一些小错误 (#7761)。
    • 修复了 basic_socket::get_option 文档中嵌入的示例中的错误 (#7562)。
    • 更改为使用 long 而不是 int 作为 SSL_CTX 选项,以匹配 OpenSSL (#7209)。
    • 更改为使用 _snwprintf 以解决由于最新 MinGW 版本中 swprintf 签名更改而导致的编译错误 (#7373)。
    • 修复了在 Windows 上关闭 io_service 线程池时,由于工作耗尽可能发生的死锁 (#7552)。
    • 为错误类别启用了 noexcept 限定符 (#7797)。
    • 更改了 UNIX 域套接字示例,将来自 accept 的错误视为非致命错误 (#7488)。
    • 添加了一个小块回收优化,以改进默认内存分配行为。
  • Bimap:
    • 重构 map_view_iterator 以改进错误消息。
    • 修复了使用带 info 的关系时 replace_(left/right/key/data) 的错误。
    • 修复了 vector_of 和 list_of 视图 assign(size_type,value_type) 的错误。
    • 修复了 vector_of 视图 operator[](size_type)at(size_type) 函数的返回值。
  • Chrono:
    • 已弃用
      • Boost.Chrono 1.2.x 中包含的 chrono i/o 版本已在 2.0.0 版本中完全重构
      • chrono I/O: 操作符 __duration_short, __duration_long 已弃用。您应该使用参数化形式 __duration_fmt 或重命名的操作符 __duration_symbol 和 __duration_prefix 代替。
      • chrono I/O: __duration_punct<> facet 已弃用。您应该使用 __get_duration_style 自由函数获取信息,并使用 __duration_units facet 进行本地化。
      • 当 BOOST_CHRONO_VERSION==2 时,上述已弃用的函数不可用。
    • 修复
      • #7546 time_point<system_clock> 输出版本 2 编译失败
      • #7547 time_point<system_clock> 输入版本 2 编译失败
      • #7868 chrono_io 解析时间不正确 (1.53 和 1.52)
  • Container:
    • 修复了错误 #7650
    • 提高了 vector 的插入性能。
    • 再次更改了实验性的多分配接口以获得更好的性能(仍处于实验阶段)。
    • 为那些愿意在其编译器中禁用异常的人添加了无异常支持。
    • 修复了 GCC -Wshadow 警告。
    • 用更新的 BOOST_NO_CXX11_XXX 宏替换了已弃用的 BOOST_NO_XXXX。
  • Context:
    • 添加了对 ARM 上的 iOS 和 x86 (32 位) 上的 MacOS X 的支持。
    • 支持 Win32 上的 SEH 覆盖保护。
  • Geometry:
    • 错误修复
      • 避免生成内部环小于最小尺寸(例如,一个或两个点)的输出多边形
      • geometry::disjoint 用于退化线段(由 Karsten Ahnert 修复)
      • geometry::difference 中缺少处理相切的问题,由 H2 报告
      • 修复了 geometry::for_each 以与 Lambda 一起使用
      • 修复了 geometry::comparable_distance 点-线串(和 -范围,-多边形)
    • 附加功能
      • geometry::disjoint 的组合:点/环,点/多边形,点/多多边形
      • geometry::intersects 的组合:点/环,点/多边形,点/多多边形
    • 内部更改
      • 各种算法的 specializations/not_implemented 中的更新(与早期版本中一样,这些更改仍在进行中;它们负责简化的结构、更好的错误报告和自动化文档)
      • 单元测试中的修复
  • GIL:
    • 修复了自赋值警告 (#4919)。
  • Graph:
    • 修复了 Trac 中的以下错误:#3468, #4386, #5269, #7428, #7457, #7467, #7600, #7648, #7684, #7728, #7741, #7766, #7771, #7773, #7780, #7787, #7801 以及 Trac 中未包含的其他错误。
    • 添加了对从包含多个图的 GraphML 文件中读取的支持。
    • 添加了专门用于树的 A* 搜索版本,当可以多次访问同一顶点时,无需颜色映射。
    • 添加了 VF2 子图同构算法(由 Flavio De Lorenzi 贡献)。
  • Hash:
    • 在可用的情况下,添加对 boost::int128_typeboost::uint128_type 的支持。
    • 在已知具有标准浮点函数的平台上,请勿使用自动检测 (#7221, #7470)。
  • Interprocess:
    • 修复了 GCC -Wshadow 警告。
    • 实验性的多分配接口得到改进并再次更改。仍然不稳定。
    • 用更新的 BOOST_NO_CXX11_XXX 宏替换了已弃用的 BOOST_NO_XXXX。
    • ABI 破坏性更改: 更改了节点池分配器内部结构以提高效率。
    • 修复了错误 #7795
  • Intrusive:
    • 修复了错误 #7174, #7529, #7815
    • 修复了 GCC -Wshadow 警告。
    • 在几个侵入式容器构造函数中添加了缺少的 explicit 关键字。
    • 用更新的 BOOST_NO_CXX11_XXX 宏替换了已弃用的 BOOST_NO_XXXX。
    • 小文档修复。
  • Lexical cast:
    • 用于用户定义类型的新字符类型检测算法 #6786
    • 文档更新 (#7582, #7831)。
    • 修复了 std::array 的错误 #7799
    • 修复了使用 -ftrapv 和数值到数值转换的编译问题 #7814
  • Locale:
    • 安全相关的错误修复,一些无效的 UTF-8 序列被接受为有效 #7743
    • 使用了无效的 Windows 代码页名称 #7386
    • 修复了由于 Doxygen 格式错误导致的文档缺失 #7734
    • 修复了某些地方缺少 std:: #7701
    • 拼写、语法、错别字修复 #7368, #7762
  • Math:
    • 修复了问题 #7325, #7415, #7416, #7183, #7649, #7694, #4445#7492
    • 修复了在双样本学生 t 示例中计算合并标准差时的错误 #7402
    • 改进复数 acos/asin/atan,参见 #7290, #7291
    • 感谢 Rocco Romeo 的建议,提高了 cyl_bessel_j 和 gamma_p/gamma_q 在某些极端情况下的精度。
    • 感谢 Rocco Romeo 的建议,提高了整数阶 Bessel J 和 Y 的精度。
  • MinMax:
    • 修复了逗号运算符的误用 (#7752)。
    • 更新了文档以修复断开的链接 (#7751)。
  • Move:
    • 更好的头文件隔离(错误 #6524)。
    • 小文档修复
    • 用更新的 BOOST_NO_CXX11_XXX 宏替换了已弃用的 BOOST_NO_XXXX。
    • 修复了 #7830, #7832
  • Polygon:
    • 修复
      • #6366 boost::polygon::contains 中 polygon_90 类型的错误。
      • #7678 由于多个 #include 导致 bool boost::polygon::belongs(...) 的多次定义。
    • 内部更改
      • 重构了点/线段/间隔数据/概念/特征。
      • 为点和间隔数据/概念/特征添加了单元测试。
      • 简化了 transform.hpp 以仅在 2D 中操作。
      • 删除了 point_3d 数据/概念/特征。
  • Random:
    • 现在可以在禁用异常的情况下编译 (#5399)。
  • Range:
  • Ratio:
    • 修复
      • #7616 br_mul::nan - 警告 C4293: '<<' : 移位计数为负或太大,行为未定义`。
  • Regex: 修复的问题:#7744, #7644
  • Smart Pointers:
    • 新功能
      • Glen Fernandes 提供了用于数组的 make_shared 和 allocate_shared 的实现。它们为数组实现单次分配,该数组可以使用构造函数参数或初始化列表进行初始化,以及用于默认初始化和无值初始化的重载。有关更多信息,请参阅“make_shared 和 allocate_shared 用于数组”页面。
      • shared_ptr 现在可以用于保存指向动态分配数组的指针。这是通过使用数组类型 (T[]T[N]) 作为模板参数来实现的。
      • 智能指针现在在 C++11 编译器上使用 explicit operator bool。这可能会破坏将智能指针传递给接受 bool 的函数,或从具有 bool 返回类型的函数返回智能指针的代码。在这种情况下,请使用 p != 0!!p
  • StringAlgo:
    • 修复了一个无法找到重叠模式的错误 (#7784)。
    • 消除了对 insert 的一些调用的歧义 (#7346)。
  • Thread:
    • 已弃用功能
      • 自 boost 1.53 起已弃用的功能仅在 boost 1.58 之前可用。
      • C++11 兼容性:packaged_task<R> 已弃用,请改用 packaged_task<R()>。
      • #7537 弃用 Mutex::scoped_lock 和 scoped_try_lock 以及 boost::condition
    • 新功能
      • #6270 C++11 兼容性:从可移动可调用对象和可移动参数添加线程构造函数
      • #7279 C++11 兼容性:在系统相关函数中添加 noexcept
      • #7280 C++11 兼容性:添加 promise::...at_thread_exit 函数
      • #7281 C++11 兼容性:将 ArgTypes 添加到 packaged_task 模板。
      • #7282 C++11 兼容性:添加 packaged_task::make_ready_at_thread_exit 函数
      • #7412 C++11 兼容性:从可移动可调用对象和可移动参数添加 async
      • #7413 C++11 兼容性:当启动策略被延迟时添加 async。
      • #7414 C++11 兼容性:future::get 后置条件应为 valid()==false。
      • #7422 提供一个具有零开销性能损失的条件变量。
      • #7444 Async: 添加 make_future/make_shared_future。
      • #7540 Threads: 添加一个在销毁时加入线程的辅助类。
      • #7541 Threads: 添加一个在销毁时加入的线程包装类。
      • #7575 C++11 兼容性:由 async 创建的 future 应该在析构函数中“加入”。
      • #7587 Synchro: 添加 strict_lock 和 nested_strict_lock。
      • #7588 Synchro: 将 locks.hpp 拆分为多个文件以限制依赖性。
      • #7590 Synchro: 添加基于 Boost.ConceptCheck 的可锁定概念检查器。
      • #7591 添加可与 enable_if 一起使用的可锁定特性。
      • #7592 Synchro: 添加一个 null_mutex,它是一个空操作,并且是 UpgardeLockable 的模型。
      • #7593 Synchro: 添加一个 externally_locked 类。
      • #7594 Threads: 允许禁用线程中断。
    • 修复的错误
      • #7464 BOOST_TEST(n_alive == 1); 由于回归测试工具中的竞争条件而失败。
      • #7657 如果重复使用 condition_variable 方法 condition notify_one 或 notify_all,则会严重影响性能和内存消耗。
      • #7665 this_thread::sleep_for 不再在线程中使用 steady_clock。
      • #7668 thread_group::join_all() 应检查其线程是否可连接。
      • #7669 thread_group::join_all() 应捕获 resource_deadlock_would_occur。
      • #7671 在 iOS 上包含 boost/thread.hpp 头文件时出错。
      • #7672 lockable_traits.hpp 语法错误:“defined”标记拼写错误。
      • #7798 boost::future set_wait_callback 线程安全问题。
      • #7808 this_thread::sleep_for 和 this_thread::sleep_until 的效果描述不正确。
      • #7812 返回值:如果调用由于 rel_time 指定的时间段已过而返回,则为 cv_status::no_timeout,否则为 cv_status::timeout。
      • #7874 编译警告:thread.hpp:342:警告:类型属性仅在类型定义时生效。
      • #7875 默认情况下不应启用 BOOST_THREAD_THROW_IF_PRECONDITION_NOT_SATISFIED。
      • #7882 来自 condition_variable::wait(unique_lock<mutex>&) 的错误异常文本。
      • #7890 thread::do_try_join_until() 缺少返回类型。
  • Unordered:
    • 删除对旧的预标准可变参数对构造函数和相等性实现的支持。两者自 Boost 1.48 起已弃用。
    • 更多内部实现更改,包括更简单的 erase 实现,并删除了更多已弃用的配置宏。
  • Utility:
    • 添加了 string_ref,它是对字符连续序列的非拥有引用。
  • Variant:
    • 添加了右值构造函数和右值赋值运算符(仅适用于 C++11 兼容的编译器)。库现在可以与仅移动类型一起使用 (#7620, #7718)。
  • Wave:
    • 有关详细信息,请参阅 Changelog
  • xpressive:
    • 适应最近的智能指针更改 (#7809)。

更新的工具

测试的编译器

Boost 的主要测试编译器是

  • Linux
    • GCC: 4.1.2, 4.2.4, 4.4.4, 4.5.3, 4.6.3, 4.7.2
    • GCC, C++11 mode: 4.4.4, 4.5.3, 4.6.3, 4.7.2
    • Intel: 11.1, 12.1
    • LLVM Clang: 2.8
    • LLVM Clang, with libc++: 3.2
  • OS X
    • GCC: 4.4.7
    • GCC, C++11 mode: 4.4.4
    • Intel: 11.1, 12.0
  • Windows
    • Visual C++: 9.0, 10.0
  • FreeBSD
    • GCC: 4.2.1, 32 and 64 bit

Boost 的其他测试编译器包括

  • Linux
    • Cray: 4.6.1
    • Clang: from subversion
    • LLVM Clang, with libc++: 3.2
    • GCC: 4.2.4, 4.4.4, 4.5.3, 4.6.3, 4.7.1
    • GCC, C++11 mode: 4.4.4, 4.5.3, 4.6.3, 4.7.1, 4.7.2
    • pgCC: 11.9
    • Intel: 10.1, 11.1, 12.1
    • Intel, C++11 mode: 13.0.1
    • Visual Age
  • OS X
    • Clang: from subversion
    • Clang, C++11 mode: from subversion
    • Intel: 11.1, 12.0
    • GCC: 4.4.7
    • GCC, C++11 mode: 4.4.4
  • Windows
    • Visual C++: 10.0, 11.0
    • Visual C++ with STLport: 9.0
    • Visual C++, Windows Mobile 5, with STLport: 9.0
  • AIX
    • IBM XL C/C++ Enterprise Edition: V12.1.0.1

致谢

Beman Dawes, Eric Niebler, Rene Rivera, Daniel James, Vladimir Prus 和 Marshall Clow 管理了此版本。