版本 1.53.0
版本 1.53.0
2013年2月4日 18:29 格林尼治标准时间
平台 | 文件 |
---|---|
unix | boost_1_53_0.tar.bz2 |
boost_1_53_0.tar.gz | |
windows | boost_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 编写。
更新的库
-
Asio:
-
Bimap:
-
重构 map_view_iterator 以改进错误消息。
-
修复了在使用带信息的关联时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 时,上述已弃用的函数不可用。
-
-
-
上下文:
-
添加了对 ARM 上 iOS 和 x86 (32 位) 上 MacOS X 的支持。
-
支持 Win32 上的 SEH 覆盖保护。
-
-
几何:
-
错误修复
-
避免生成内部环小于最小大小(例如,一个或两个点)的输出多边形。
-
退化线段的
geometry::disjoint
(由 Karsten Ahnert 修补)。 -
geometry::difference
中缺少切线处理的问题,由 H2 报告。 -
修复了与 Lambda 一起使用时的
geometry::for_each
。 -
修复了点线串(以及范围、多边形)的
geometry::comparable_distance
。
-
-
附加功能
-
geometry::disjoint
的组合:点/环、点/多边形、点/多面体。 -
geometry::intersects
的组合:点/环、点/多边形、点/多面体。
-
-
内部更改
-
各种算法的专门化/未实现的更新(与早期版本一样,这些更改仍在进行中;它们负责简化结构、改进错误报告和自动化文档)。
-
单元测试中的修复。
-
-
-
智能指针:
-
新功能
-
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
。
-
-
-
线程:
-
已弃用的特性
-
自 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 兼容性:添加从可移动的可调用对象和可移动参数创建异步任务的函数
-
#7413 C++11 兼容性:当启动策略为延迟时添加异步支持。
-
#7414 C++11 兼容性:`future::get` 的后置条件应为 `valid()==false`。
-
#7422 提供一个具有零开销性能损耗的条件变量。
-
#7444 异步:添加 `make_future`/`make_shared_future`。
-
#7540 线程:添加一个在析构时连接线程的辅助类。
-
#7541 线程:添加一个在析构时连接的线程包装器类。
-
#7575 C++11 兼容性:由 `async` 创建的 `future` 应在其析构函数中“连接”。
-
#7587 同步:添加 `strict_lock` 和 `nested_strict_lock`。
-
#7588 同步:将 `locks.hpp` 分割成多个文件以限制依赖项。
-
#7590 同步:添加基于 Boost.ConceptCheck 的可锁定概念检查器。
-
#7591 添加可用于 `enable_if` 的可锁定特性。
-
#7592 同步:添加一个无操作的 `null_mutex`,它是 `UpgardeLockable` 的模型。
-
#7593 同步:添加一个 `externally_locked` 类。
-
#7594 线程:允许禁用线程中断。
-
-
已修复的错误
-
#7464 `BOOST_TEST(n_alive == 1);` 由于回归测试工具中的竞争条件而失败。
-
#7657 如果反复使用 `condition_variable` 方法 `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: warning: type attributes are honored only at type definition`。
-
#7875 `BOOST_THREAD_THROW_IF_PRECONDITION_NOT_SATISFIED` 不应默认启用。
-
#7882 `condition_variable::wait(unique_lock<mutex>&)` 返回的异常文本错误。
-
#7890 `thread::do_try_join_until()` 缺少返回类型。
-
-
-
无序:
-
删除对旧的预标准可变参数对构造函数和相等性实现的支持。两者自 Boost 1.48 起已被弃用。
-
更多的内部实现更改,包括更简单的 `erase` 实现,并删除了更多已弃用的配置宏。
-
-
实用程序:
-
添加了 string_ref,一个指向连续字符序列的非拥有引用。
-
更新的工具
-
Boost 构建系统:
-
Qt5 工具集
-
改进了 rcc 支持(#7576)
-
已测试的编译器
Boost 的主要测试编译器是:
-
Linux
-
GCC:4.1.2、4.2.4、4.4.4、4.5.3、4.6.3、4.7.2
-
GCC,C++11 模式:4.4.4、4.5.3、4.6.3、4.7.2
-
Intel:11.1、12.1
-
LLVM Clang:2.8
-
LLVM Clang,带 libc++:3.2
-
-
OS X
-
GCC:4.4.7
-
GCC,C++11 模式:4.4.4
-
Intel:11.1、12.0
-
-
Windows
-
Visual C++:9.0、10.0
-
-
FreeBSD
-
GCC:4.2.1,32 位和 64 位
-
Boost 的其他测试编译器包括:
-
Linux
-
Cray:4.6.1
-
Clang:来自 Subversion
-
LLVM Clang,带 libc++:3.2
-
GCC:4.2.4、4.4.4、4.5.3、4.6.3、4.7.1
-
GCC,C++11 模式: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 模式:13.0.1
-
Visual Age
-
-
OS X
-
Clang:来自 Subversion
-
Clang,C++11 模式:来自 Subversion
-
Intel:11.1、12.0
-
GCC:4.4.7
-
GCC,C++11 模式:4.4.4
-
-
Windows
-
Visual C++:10.0、11.0
-
Visual C++,带 STLport:9.0
-
Visual C++,Windows Mobile 5,带 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 负责此版本的管理。