版本 1.55.0
版本 1.55.0
2013年11月11日 19:50 GMT
平台 | 文件 |
---|---|
unix | boost_1_55_0.tar.bz2 |
boost_1_55_0.tar.gz | |
windows | boost_1_55_0.7z |
boost_1_55_0.zip |
其他下载
-
PDF 文档 (仅适用于基于 BoostBook 的文档)。
新闻
已从 Config 中移除对某些非常旧版本的编译器的支持。新的最低要求是
-
Digitial Mars 8.41
-
GCC 3.3
-
Intel 6.0
-
Visual C++ 7.1
注意: 这只是 Config 的最低要求。某些 Boost 库可能具有更高的最低要求,并且可能不支持所有平台或编译器。
其他编译器目前保持不变,但我们正在考虑移除对其他一些旧编译器的支持。候选对象 包括移除
-
Metroworks C++ (即 CodeWarrior)
-
SunPro 5.7 及更早版本
-
Borland C++ Builder 2006 (5.82) 及更早版本
如果您正在使用其中任何一个,请在邮件列表中告知我们。在做出决定之前,我们会考虑收到的任何反馈。
Visual Studio 2013/Visual C++ 12 的已知错误
Visual Studio 2013 在发布过程的后期才发布,因此存在一些未解决的问题。这些包括
-
由于缺少包含文件,序列化无法编译。
-
在诸如 Unordered 和 MultiIndex 等库中,使用初始化列表调用重载函数可能会导致编译错误,Visual C++ 声称重载是模棱两可的。这是一个 Visual C++ 错误,目前尚不清楚是否有好的解决方法。这不会影响不使用初始化列表的代码,或使用不需要隐式转换的初始化列表(即容器的确切值类型的初始化列表)。
-
线程:
ex_scoped_thread
编译失败 (#9333)。
新库
-
Predef: 此库定义了一组编译器、架构、操作系统、库和其他版本号,这些版本号来自它可以收集的 C、C++、Objective C 和 Objective C++ 预定义宏或通用头文件中定义的宏的信息,作者是 Rene Rivera。
更新的库
-
Asio:
-
实现了对 Windows Runtime 的有限移植。此支持需要启用语言扩展。由于 Windows Runtime API 公开的功能受限,因此该移植也存在以下注意事项
-
核心功能(如
io_service
、strand
、缓冲区、组合操作、计时器等)都应正常工作。 -
对于套接字,仅支持客户端 TCP。
-
不支持显式绑定客户端 TCP 套接字。
-
套接字不支持
cancel()
函数。异步操作只能通过关闭套接字来取消。 -
不支持使用
null_buffers
的操作。 -
仅支持
tcp::no_delay
和socket_base::keep_alive
选项。 -
解析器不支持服务名称,仅支持数字。即,您必须使用 “80” 而不是 “http”。
-
大多数解析器查询标志无效。
-
-
修复了一个回归错误(在 Boost 1.54 中引入),其中在某些平台上,来自
async_connect
的错误未正确传播到完成处理程序 (#8795)。 -
修复了一个特定于 Windows 的回归错误(在 Boost 1.54 中引入),当多个线程运行
io_service
时会发生此错误。当错误发生时,异步操作的结果(错误和传输的字节数)会被错误地丢弃,并改用零值。对于 TCP 套接字,这会导致虚假的 end-of-file 通知 (#8933)。 -
修复了处理程序跟踪中的一个错误,其中未正确打印出某些处理程序 ID (#8808)。
-
修复了用于测试成功的同步接受操作的比较,以便它可以与无符号套接字描述符一起正常工作 (#8752)。
-
确保在已引发的信号上启动
async_wait
时,信号编号已正确传递给完成处理程序 (#8738)。 -
抑制了 g++ 4.8+ 关于未使用 typedef 的警告 (#8980)。
-
为使用默认调用钩子的处理程序启用了移动优化 (#8624)。
-
阐明程序不得发出重叠的
async_write_at
操作 (#8669)。 -
Visual C++ 语言扩展将
generic
用作关键字。添加了一个解决方法,当这些语言扩展生效时,将命名空间重命名为cpp_generic
。 -
为 Microsoft Visual Studio 2012 启用了移动支持 (#8959)。
-
为 Microsoft Visual Studio 2012 添加了
use_future
支持。 -
消除了一些不必要的处理程序副本。
-
-
Atomic:
-
添加了对 GCC、MSVC 和兼容编译器在 x86 目标上进行 64 位原子操作的支持。当在编译时已知目标 CPU 支持所需的指令时,将启用此支持。
-
添加了对 GCC 和兼容编译器在 x86-64 目标上进行 128 位原子操作的支持。当在编译时已知目标 CPU 支持所需的指令时,将启用此支持。可以使用新的
BOOST_ATOMIC_INT128_LOCK_FREE
宏来测试此支持。 -
添加了基于 GCC
__atomic*
内在函数(自 GCC 4.7 起可用)的更高效的atomic<>
实现。 -
添加了对更多 ARM v7 CPU 的支持,改进了 Thumb 2 的检测。
-
添加了对 GCC 和兼容编译器在 x32(即带有 32 位指针的 64 位 x86)目标上的支持。
-
移除了对 Boost.Thread 的依赖。
-
内部锁池现在包括适当的填充和对齐,以避免伪共享。
-
修复了在 Windows 上使用 Intel 编译器进行编译的问题。移除了在 Windows 上编译时的内部宏重复。
-
一些代码重构,以便在可用时使用 C++11 功能。
-
-
Config:
-
重大更改:移除了对某些旧编译器的支持。新的最低编译器版本是
-
Digitial Mars 8.41
-
GCC 3.3
-
Intel 6.0
-
Visual C++ 7.1
其他编译器保持不变。 -
-
-
Filesystem:
-
#8706 修复了 Android 编译问题 #8706。
-
-
Geometry:
-
附加功能
-
为线段类型添加了质心
-
为线段-框和线串-框添加了 intersects() 和 disjoints()
-
添加了使用打包算法创建 rtree
-
添加了 contains() 和 covers() 空间查询谓词
-
添加了迭代查询
-
-
错误修复
-
在某些情况下,调用了 .back() 或 .clear(),违反了 Concepts 的用法。已修复报告的案例
-
-
-
Graph:
-
void
不再允许作为捆绑属性类型(例如,在图类型的 VertexProperties 模板参数中);它以前工作不可靠,但现在静态断言完全禁止它。请改用boost::no_property
。 -
在深度优先搜索中添加了对
finish_edge
访问者事件点的支持;此更改应向后兼容没有该成员函数的访问者。 -
禁用了在 Sun 编译器上构建测试。
-
在
breadth_first_visit
、breadth_first_search
、dijkstra_shortest_paths
和dijkstra_shortest_paths_no_init
的非命名参数版本中,支持多个源顶点。此功能尚未记录在案;要使用它,请在这些函数中的每一个中,将源顶点的单个参数替换为两个相同类型的输入迭代器,其中包含要使用的源顶点。 -
添加了 Hawick 电路算法;由 Louis Dionne 贡献。
-
添加了边着色算法;由 Maciej Piechotka 贡献。
-
添加了最小成本最大流算法;由 Piotr Wygocki 贡献。
-
-
Intrusive:
-
源代码破坏性更改:从 splay 容器中弃用了
xxx_dont_splay
函数。从 splay 容器中弃用了splay_set_hook
,请改用bs_set_hook
。两者都将在 Boost 1.56 中移除。 -
ABI 破坏性更改:哈希容器的 end 迭代器被实现为指向 bucket 数组末尾之后的位置(参见 #8698),当要插入的值分配在 bucket 数组旁边时,会导致严重错误。End 迭代器实现已更改为指向 bucket 数组的开头。
-
为了减少模板和调试符号膨胀而进行了大规模重构。在调试模式下,MSVC 编译器中的测试目标文件已减少到一半。没有 Identical COMDAT Folding (ICF) 的工具链应该会注意到大小的改进。
-
实现了 SCARY 迭代器。
-
-
Lexical cast:
-
文档已改进,并添加了更多使用示例。
-
Log:
-
常规更改
-
添加了一个新的配置宏
BOOST_LOG_WITHOUT_DEFAULT_FACTORIES
。通过定义此宏,用户可以禁用设置解析器使用的默认过滤器和格式化程序工厂的编译。这可以显着减小二进制文件大小,同时仍保留对设置解析器的支持。 -
重写了一些解析器以减小编译后的二进制文件大小。重写的解析器在检测模糊和不正确的输入方面更加健壮。
-
以下标头已弃用:
boost/log/utility/intrusive_ref_counter.hpp
,boost/log/utility/explicit_operator_bool.hpp
,boost/log/utility/empty_deleter.hpp
。这些标头将在未来的版本中移除。这些标头的内容已移动到其他库。
-
-
有关更多详细信息,请参阅 changelog。
-
-
Math:
-
修复了 PGI 编译问题 #8333。
-
修复了导致 erf 生成不正确结果的 PGI 常数值初始化问题 #8621。
-
修复了 Student's T 分布,使其在自由度很大(大于最大的可表示整数)时表现正确 #8837。
-
为 Intel C++ 14 中损坏的 <tuple> 添加解决方法 #9087。
-
提高椭圆积分中参数约简的一致性 #9104。
-
修复逆不完全 beta 函数中的错误,当 beta 函数实际上是反正弦或 Student's T 分布时,会导致抵消错误。
-
修复 Bessel I 和 K 函数连分数中的问题,该问题会导致虚假的溢出/下溢。
-
由于 Thomas Luu 的贡献,改进了非中心卡方分布分位数。
-
Meta State Machine:
-
新功能:中断状态现在支持一系列事件来结束中断。
-
修复了 Trac #8686。
-
-
Multiprecision:
-
添加了对 Boost.Serialization 的支持。
-
抑制了一些 GCC 警告。请参阅 8872。
-
修复了 pow 对大整数参数的错误。请参阅 8809。
-
修复了 pow 在计算 0[super N] 时的错误。请参阅 8798。
-
修复了固定精度 cpp_int IO 代码中的错误,该错误导致当位计数非常小(小于 CHAR_BIT)时,转换为字符串失败。请参阅 8745。
-
修复了 cpp_int 中的错误,该错误导致当固定精度类型会溢出时,左移失败。请参阅 8741。
-
修复了来自 cpp_int 的一些修饰性警告。请参阅 8748。
-
修复了对 C99 中需要作为宏的函数的调用。请参阅 8732。
-
修复了导致从 INT_MIN、LONG_MIN 等构造在 cpp_int 中失败的错误。请参阅 8711。
-
-
Multi-index Containers:
-
Boost.MultiIndex 已被提升到更高的 C++11 兼容级别。
-
multi_index_container
现在可以有效地移动。 -
支持初始化列表。
-
提供了 Emplace 函数。
-
支持不可复制的元素(例如
std::unique_ptr<T>
)。这包括插入范围 [first
,last
),其中迭代器指向可转换为元素类型的类型:在此过程中不会发生复制构造。 -
随机访问索引提供
shrink_to_fit()
。
有关 C++11 之前的编译器的限制,请参阅编译器特定部分。 -
-
维护修复。
-
-
MPI:
-
替换了对已弃用的 MPI 函数的调用
-
添加了对多线程初始化的支持
-
添加了就地集合
-
-
PropertyMap:
-
dynamic_properties 对象现在可以通过非破坏性地链接
.property(name, pm)
调用来构建。示例boost::dynamic_properties() .property("color", color_map) .property("pos", position_map)
-
不推荐使用原始指针作为属性映射;它过去在 Visual Studio 中经常失败。此用法已从 Boost.Graph 中的所有测试和示例中删除。用于图中顶点属性的替代方法(此功能最常见的用途)是
boost::make_iterator_property_map( <pointer or container .begin() iterator>, get(boost::vertex_index, <graph object>))
(注意:此代码中 get() 缺少命名空间限定是通用代码所必需的)。在图上下文之外,最接近的等效项是boost::make_iterator_property_map( <pointer>, boost::typed_identity_property_map<std::size_t>())
在<boost/property_map/property_map.hpp>
的第 151 行和第 159 行上有注释掉的静态断言,可以取消注释以查找用户代码中已弃用的指针用法。
-
-
SmartPtr:
-
添加了从 Boost.Log 中提取的
boost/smart_ptr/intrusive_ref_counter.hpp
标头。该标头实现了一个混入基类,该基类为用户的类添加了对intrusive_ptr
的支持。
-
-
Thread:
-
新功能
-
#8519 Synchro:使用完成函数更新类 barrier。
-
#8515 Async:添加
shared_future::then
。 -
#8519 Synchro:使用完成函数更新类 barrier
-
#8615 Async:将 make_future/make_shared_future 替换为 make_ready_future。
-
#8627 Async:添加 future<>::unwrap 和解包构造函数。
-
#8677 Async:添加 future<>::get_or。
-
#8678 Async:添加 future<>::fallback_to。
-
#8891 upgrade_to_unique_lock:缺少 mutex() 函数。
-
#8955 请求更有效的方式从 future 获取 exception_ptr。
-
-
修复的错误
-
#7461 detail::win32::ReleaseSemaphore 可能会以 count_to_release 等于 0 的情况调用
-
#8070 优先使用 GetTickCount64 而不是 GetTickCount
-
#8768 win32 condition_variable::wait_until 在极少数情况下无限等待。
-
#8817 Boost Thread Windows CE _createthreadex 处理破坏 mingw w64。
-
#8943 无法在 Windows 上使用 Intel C++ Composer XE 2013 编译使用 boost::call_once 的代码。
-
#8931 external_locking 参考中的错别字。
-
#9029 文档中的印刷错误。
-
#9037 gcc -Wshadow 在 condition_variable{,_fwd}.hpp 中给出警告。
-
#9041 Boost.Thread DSO 可能需要与 Boost.Atomic 链接。
-
#9048 boost::scoped_thread 无用的带有可变参数模板参数的 ctor。
-
#9079 条件变量将永远等待某些时间点值 (Win)。
-
-
-
Type Traits:
-
添加了
is_copy_contructible
特征 #8802。
-
-
Utility:
-
可以设置
boost::result_of
默认使用 TR1 协议,如果函数对象不支持(例如 C++11 lambda 函数),则回退到decltype
。定义BOOST_RESULT_OF_USE_TR1_WITH_DECLTYPE_FALLBACK
配置宏以启用此模式。 -
改进了
boost::base_from_member
类模板中对 C++11 的支持。如果编译器支持右值引用、可变参数模板和函数模板默认参数,则该类为构造函数参数实现完美转发。 -
添加了从 Boost.Log 中提取的
boost/utility/explicit_operator_bool.hpp
和boost/utility/empty_deleter.hpp
标头。这些标头实现了用于定义到bool
的显式转换运算符和不执行任何操作的删除器函数对象的实用工具。
-
更新的工具
-
Quickbook:
-
Quickbook 1.6 已完成,有关详细信息,请参阅 Quickbook 文档。
-
测试的编译器
Boost 的主要测试编译器是
-
Linux
-
Clang: 3.3, 3.2, 3.1, 3.0
-
Clang, C++11, libc++: 3.4, 3.3
-
GCC: 4.8.1, 4.7.3, 4.6.3, 4.5.3, 4.4.7
-
GCC, C++11: 4.8.1
-
GCC, C++98: 4.8.1
-
-
OS X
-
GCC: 4.2
-
Apple Clang: 5.0
-
Apple Clang, C++11: 5.0
-
-
Windows
-
GCC, mingw: 4.8.0, 4.7.2, 4.6.3, 4.5.4, 4.4.7
-
Visual C++: 11.0, 10.0, 9.0
-
Boost 的其他测试编译器包括
-
OS X
-
Apple Clang: 5.0
-
Apple Clang, C++11: 5.0
-
Clang: trunk
-
Clang, C++11: trunk
-
GCC: 4.2.1
-
-
Linux
-
Clang: 3.3, 3.2, 3.1, 3.0, trunk
-
Clang, C++11: 3.4
-
Clang, C++11, libc++: 3.4, 3.3
-
GCC: 4.9.0 (experimental), 4.8.1, 4.7.3, 4.6.4, 4.5.3, 4.4.7
-
GCC, C++11: 4.8.1
-
GCC, C++98: 4.8.1
-
Intel: 13.0.1, 12.1.6
-
-
Windows
-
GCC, mingw: 4.8.0, 4.7.2, 4.6.3, 4.5.4, 4.4.7
-
Visual C++: 11.0, 10.0, 9.0
-
致谢
Beman Dawes, Eric Niebler, Rene Rivera, Daniel James, Vladimir Prus 和 Marshall Clow 管理了此版本。