Boost C++ 库

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

版本 1.51.0

版本 1.51.0

2012年8月20日 格林尼治标准时间23:00

文档

下载
平台文件
Unixboost_1_51_0.tar.bz2
boost_1_51_0.tar.gz
Windowsboost_1_51_0.7z
boost_1_51_0.zip

补丁

  • 区域设置补丁 - 修复了一个导致 boost::locale::utf::utf_traits 接受一些无效 UTF-8 序列的错误,这是一个潜在的安全漏洞。

新增库

  • Context: 上下文切换库,来自 Oliver Kowalke。

更新库

  • Algorithm(算法):
    • 修复了 is_sorted_until;现在与 c++11 标准在具有重复值的范围上的行为相匹配。
    • 为其余搜索算法添加了范围支持。
    • unhex 现在使用 Boost.Exception 来 segnal 错误输入。
  • Asio:
    • 修复了 ip::tcp::iostream 和 C++11 之间的兼容性问题(#7162)。
    • 用下划线修饰 GCC 属性名称,以防止与用户定义的宏交互(#6415)。
    • 添加了缺少的 #include <cctype>,某些版本的 MinGW 需要它。
    • 更改为使用gcc在 ARM CPU 上的原子内置函数(如果可用)(#7140)。
    • 将 strand 析构函数更改为空操作,以允许在其关联的 io_service 被销毁后销毁 strand 对象。
    • 添加了对一些较新版本的 glibc 的支持,这些版本提供了 epoll_create1() 函数,但始终以 ENOSYS 失败(#7012)。
    • 如果 SSL 引擎初始化失败,则更改 SSL 实现以抛出异常(#6303)。
    • 修复了 buffered_write_stream 中的另一个回归问题(#6310)。
    • 实现了各种细微的性能改进,主要针对 Linux x86 和 x86-64 平台。
  • Config(配置):
    • 弃用了一大堆特定于 c++11 的宏,但没有命名以表明它们是特定于 c++11 的。 使用更好的名称创建了新的宏,并将旧宏与新宏配对。 更新了文档以列出已弃用的宏。
  • Chrono(计时):
    • #6918 由于未定义 pthread_getcpuclockid,Boost Chrono 在 HP uX 上编译失败。
    • #6241 没有 std::wstring 支持的 boost::chrono 编译问题。
    • #6987 文档和 C++11。
    • #7041 time_point.hpp 依赖于 Boost.System。
    • #7042 避免 time_point 和 duration 对 time.h 和 CLOCK_REALTIME 的依赖。
    • #7058 定义 BOOST_NO_EXCEPTIONS 时使其工作。
    • #7069 clock_string<thread_clock> 中的拼写错误。
    • #7081 boost/detail/win/basic_types.hpp 中的 WinError.h 大小写。
  • Geometry(几何):
    • 现在应该专门针对通过指针访问的点(例如在线串中),而无需指针。 在以前的版本中,像 linestring<my_point*> 一样使用的 my_point 类型必须专门化如下: template<> struct tag<my_point*>。 现在库本身在调用 traits 类之前删除了指针,所以现在它应该是这样的: template<> struct tag<my_point>
    • 整数点的交集有时是错误的,已修复
    • 文档,simplify 中的参数顺序错误,已修复
    • 7030 球面距离,已修复(由 Karsten Ahnert 的补丁修复)
  • Graph(图):
    • 重构了 Boost.Graph 提供的图类型中对内部和捆绑属性的支持,并清理了命名参数功能
      • compressed_sparse_row_graph 中启用了旧式(非捆绑)内部属性。
      • 捆绑属性应该适用于所有图形类型和适配器。
    • 错误修复
      • #6993:捆绑属性文档中的拼写错误
      • #7002:CSR 双向图初始化问题
      • #7023:将内部类型 graphml_reader 封闭在匿名命名空间中
      • Trac 中没有的其他错误和警告
  • Hash(哈希):
    • 支持标准智能指针。
    • 现在使用 SFINAE 实现 hash_value,以避免在调用它时隐式转换为内置类型。
    • 更新为使用新的配置宏。
  • Lexical cast(词法转换):
    • 更好的性能,更少的内存使用 boost::array<character_type, N>std::array<character_type, N> 转换。
    • 修复了 volatile 输入参数的错误 #7157
  • Math(数学):
    • 更新为使用新的配置宏。
  • MSM:
  • Proto:
    • Proto 转换获得了用于解包表达式的伪参数包扩展支持。有关更多信息,请参阅发行说明
  • Ratio (比率):
    • #7075 解决错误:部分特化模板参数常量“n1”的类型取决于另一个模板参数。
  • Regex(正则表达式):
    • 更新为使用新的配置宏。
  • Thread(线程):
    • #4258 在 mingw/gcc 4.5 上链接 boost 线程不起作用。
    • #4885 由于对 TlsAlloc 的无效假设,在进程退出时 set_tss_data 中出现访问冲突。
    • #6931 使用 Intel 编译器和 /debug:parallel 时互斥锁永远等待
    • #7044 缺少 boost 1.50.0 头文件。
    • #7052 线程:BOOST_THREAD_PROVIDES_DEPRECATED_FEATURES_SINCE_V3_0_0 仅屏蔽 thread::operator==、thread::operator!= 前向声明,而不屏蔽定义。
    • #7066 尝试修复 current_thread_tls_key 静态初始化顺序。
    • #7074 多重定义符号 boost::allocator_arg。
    • #7078 Windows 上线程属性堆栈大小的简单 64 位警告修复
    • #7089 BOOST_THREAD_WAIT_BUG 在没有解决任何问题的情况下限制了功能
  • Unordered(无序):
    • 修复了将 C++11 编译器与 C++03 分配器一起使用时的构造/析构问题(#7100)。
    • 删除 try..catch 以支持在没有异常的情况下进行编译。
    • 调整 SFINAE 的使用以尝试支持 g++ 3.4(#7175)。
    • 更新为使用新的配置宏。
  • Wave:
  • xpressive:
    • 解决 cygwin 和 mingw 上有问题的宽 ctype facet。
    • 解决某些 glibc 实现中缺少 __isctype 的问题。
    • op::as 不应该假设 string::iterator != char*.
    • 感谢 John Fletcher,修复了 libc++ 中 cpp_regex_traits 的断言。

测试过的编译器

Boost 的主要测试编译器是

  • Linux
    • GCC:4.2.4、4.3.4、4.4.3、4.5.3、4.6.2、4.7
    • GCC,C++11 模式:4.3.4、4.4.3、4.5.3、4.6.2
    • Intel:11.1、12.0、12.1
    • LLVM Clang 2.8
  • OS X
    • GCC:4.4
    • GCC,C++11 模式:4.4
    • Intel:11.1、12.0
  • Windows
    • GCC,mingw:4.4.0、4.4.7、4.5.4、4.6.3
    • Visual C++:8.0、9.0、10.0
  • FreeBSD
    • GCC:4.2.1,32 位和 64 位

Boost 的其他测试编译器包括

  • Linux
    • Clang:来自 subversion
    • LLVM Clang:3.0
    • GCC:4.2.4、4.3.4、4.4.4、4.4.7、4.5.3、4.6.2、4.6.3、4.7.0、4.7.1
    • GCC,C++11 模式:4.3.4、4.4.4、4.5.3、4.6.3
    • pgCC:11.9
    • Intel:10.1、11.1、12.0、12.1
    • Visual Age:10.1
  • OS X
    • Clang:来自 subversion
    • Clang,C++11 模式:来自 subversion
    • Intel:11.1、12.0
    • GCC:4.4
    • GCC,C++11 模式:4.4
  • Windows
    • Visual C++:8.0、9.0、10.0
    • GCC,mingw:4.4.0、4.6.3、4.7.0
  • AIX
    • IBM XL C/C++ Enterprise Edition:V12.1.0.0
  • FreeBSD
    • GCC:4.2.1,32 位和 64 位
  • Solaris
    • Sun:5.10

致谢

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