【问题标题】:Does Boost provide an implementation of span for C++14?Boost 是否为 C++14 提供 span 的实现?
【发布时间】:2020-06-21 18:33:17
【问题描述】:

std::span 是在 C++20 中引入的,但我仅限于 C++14,并且在较小程度上仅限于任何版本的 Boost 库。 Boost中有类似的东西吗?

【问题讨论】:

标签: c++ boost c++14


【解决方案1】:

Boost 是否为 C++14 提供 span 的实现?

boost 命名空间中没有跨度。但是Boost Beast libraryboost::beast::span。它似乎没有完全实现与std::span 相同的接口,而是相同类似想法的实现。

还有boost::hana::span,这是别的东西。

【讨论】:

  • 这几乎就是我想要的。除非它不提供可变迭代器):
  • 好吧,std::span 也没有,它的 begin 方法也被标记为const。所以这不是我期望的实际可变切片。
  • @L117 std::span 迭代器是可变的。但是,是的,boost::beast::span 似乎不是。
  • 是吗?正如建议的那样,我刚刚尝试了 Microsoft GSL 的span。它的签名与std::span 完全相同,我无法改变值,因为迭代器返回const value_type
  • 所以我最终申请了(临时的)可怕的const_cast hack 让它做我想做的事。
【解决方案2】:

从 Boost-1.78 开始,boost::span 现在是 Boost 核心的一部分(请参阅Boost::span docs)。这是std::span 的 C++11/14/17 兼容实现。

【讨论】:

  • Eccellent 单头实现。
猜你喜欢
  • 2014-12-04
  • 2018-09-22
  • 1970-01-01
  • 2018-04-13
  • 2013-06-29
  • 1970-01-01
  • 2013-10-05
  • 1970-01-01
  • 2018-04-21
相关资源
最近更新 更多