【问题标题】:Is it possible to create iterators with C++14 that are C++17 compliant?是否可以使用符合 C++17 的 C++14 创建迭代器?
【发布时间】:2020-02-26 05:25:12
【问题描述】:

我使用的是 GCC 6.2.0,它默认使用 C++14。在未来的某个时候,我们希望迁移到 C++17。我想在我们的一些类中添加一些 C++ 迭代器,但它们在 C++14 和 C++17 之间发生了变化。如果我现在写它们,我以后升级编译器版本时是否必须重写它们,或者有没有办法现在写一次并让它们向前兼容?

【问题讨论】:

  • 我不太明白。以指针为例,它们一直是并且将永远是“兼容的”迭代器
  • 您能否给出一个您认为需要更改的 C++14 迭代器的具体示例?您是否正在考虑使用 std::iterator 并担心它会被弃用?由于您还没有编写迭代器,所以不要使用std::iterator。 C++14 不需要它。

标签: c++ stl c++14 c++17


【解决方案1】:

我相信你所说的变化是删除了类模板std::iterator

std::iterator 过去和将来都只是一个实用助手;它被删除是因为它是一个简单的实用程序,而且人们认为它不仅仅是一个实用程序助手。

不要使用std::iterator,自己定义typedef即可。

如果更新已经使用 std::iterator 的代码库,请创建自己的(就像 6 行代码)并搜索/替换。

【讨论】:

    猜你喜欢
    • 2015-04-01
    • 2011-01-18
    • 1970-01-01
    • 2021-10-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-17
    • 1970-01-01
    相关资源
    最近更新 更多