是否可以使用 C++14 创建兼容 C++17 的迭代器?

dro*_*del 1 c++ stl c++14 c++17

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

Yak*_*ont 5

我相信您所谈论的更改是删除了类模板std::iterator

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

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

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