【问题标题】:what will happen with the overlapping portion of boost once C++0x becomes mainstream?一旦 C++0x 成为主流,boost 的重叠部分会发生什么?
【发布时间】:2009-01-01 17:16:03
【问题描述】:

一旦 C++0x 成为主流,boost 的重叠部分会发生什么?

boost 是否仍会包含以前的所有内容,或者他们是否会调整库以使用新的 std:: 内容对其进行更新?

boost 是否会同时拥有正常的 c++ 版本和他们将维护的 c++0x 版本?

【问题讨论】:

    标签: c++ boost c++11


    【解决方案1】:

    出于几个原因,人们会希望 Boost 继续支持现有的类。

    首先,有一段代码使用了 Boost 中的重叠功能,需要在一段时间内得到支持。

    其次,重叠的实现让我可以选择我更喜欢使用哪一个。 std::Frob 和 Boost::Frob 之间可能存在一些对我的项目很重要的区别,并且有选择是好的。

    不过,从长远来看,我希望应用程序编写者和工具提供者都向标准迁移。这使得使用 std:: 成为一个风险较小的选择。

    【讨论】:

    • 我认为 boost 函数的接口不是 std::
    • 还有很多编译器不能立即支持 boost 的所有内容。即使他们得到 std::bind ,它也错过了 boost::bind 的一些特性
    • 这正是添加命名空间的原因——因此代码可以共存。
    【解决方案2】:

    我不隶属于 Boost,也不知道他们会做什么,但 Boost 似乎不会受到影响。

    已经发布了 TR1(VS 2008 功能包)并且 Boost 保持不变。由于许多用户尚未采用 Boost 或 TR1,我的预测是,至少在未来五年内,boost 和 c++0x 库将存在于不同的命名空间中,并且可供 C++0x 用户和 C++ 用户使用。

    【讨论】:

    【解决方案3】:

    命名空间使这对 Boost 开发人员来说不是问题。 boost 库和标准库之间没有直接的争用,因为它们存在于不同的命名空间中。因此,命名空间 std 的更改(例如添加 std::tr1)对 Boost 没有直接影响。

    但是请注意,如果您将两个库(std 和 boost)都导入到全局命名空间中,那么您将遇到问题。

    以下来自 Boost TR1 文档的引用也阐明了 Boost 对 TR1 组件的实现,表明相应的 Boost 库将在可预见的未来得到维护:

    TR1 库提供了一个 C++技术的实现 标准库扩展报告。 这个库本身并没有实现 TR1 组件,而它很薄 将包含您的包装器 标准库的 TR1 实现 (如果有的话),否则它会 包括 Boost 库等价物, 并将它们导入命名空间 std::tr1。

    【讨论】:

      【解决方案4】:

      你是说tr1吗?

      Boost 已经支持 tr1。 boost 中所有被 std::tr1 采用的类都可以在 boost 的这个命名空间中使用。请参阅以下文档。

      http://www.boost.org/doc/libs/1_37_0/doc/html/boost_tr1.html

      【讨论】:

        猜你喜欢
        • 2011-06-07
        • 1970-01-01
        • 2019-07-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-01-16
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多