为什么 libstdc++ 没有 span::span(Container&)?
Why doesn't libstdc++ have span::span(Container&)?
根据 cppreference,在 C++20 中,std::span
应该可以使用容器引用构造:
template <class Container>
constexpr span(Container& cont);
template <class Container>
constexpr span(const Container& cont);
但是在 libstdc++ 的 span 文件的主分支中(截至 2020 年 1 月 18 日),我没有看到这些构造函数。我确实看到一个构造函数使用了 Range&&
- 这是一个足够的替代品吗?或者 - 我错过了什么吗?
在处理不断变化的 C++ 功能时(例如尚未完成的标准),最好 go to the source 而不是像 Cppreference 这样的辅助文档。
在撰写本文时,the working draft of the standard 执行 libstdc++ 所说的:单个重载可以采用连续范围的 &&
。对此函数的限制与 Cppreference 中的限制非常相似,它们基本上是表达同一事物的不同方式,但 libstdc++ 正在实现当前存在的标准。
根据 cppreference,在 C++20 中,std::span
应该可以使用容器引用构造:
template <class Container>
constexpr span(Container& cont);
template <class Container>
constexpr span(const Container& cont);
但是在 libstdc++ 的 span 文件的主分支中(截至 2020 年 1 月 18 日),我没有看到这些构造函数。我确实看到一个构造函数使用了 Range&&
- 这是一个足够的替代品吗?或者 - 我错过了什么吗?
在处理不断变化的 C++ 功能时(例如尚未完成的标准),最好 go to the source 而不是像 Cppreference 这样的辅助文档。
在撰写本文时,the working draft of the standard 执行 libstdc++ 所说的:单个重载可以采用连续范围的 &&
。对此函数的限制与 Cppreference 中的限制非常相似,它们基本上是表达同一事物的不同方式,但 libstdc++ 正在实现当前存在的标准。