【发布时间】:2016-08-30 03:10:13
【问题描述】:
3 月 21 日st,标准委员会投票批准了在 P0174 中提出的 std::iterator 的弃用:
与在类定义本身中提供预期的
typedefs 相比,长序列的 void 参数对读者来说不太清楚,这是当前工作草案采用的方法,遵循c++14 中设置的模式
在从 std::iterator 继承 c++17 之前,鼓励从迭代器样板实现中删除乏味。但弃用将需要以下条件之一:
- 迭代器样板现在需要包含所有必需的
typedefs - 使用迭代器的算法现在需要使用
auto,而不是依赖迭代器来声明类型 -
Loki Astari has suggested
std::iterator_traits可以在不继承std::iterator的情况下更新以工作
当我设计自定义迭代器时着眼于c++17 兼容性时,有人能告诉我我应该期待哪些选项吗?
【问题讨论】:
-
@FirstStep 我希望得到一个不基于意见的答案。如果标准委员会正在弃用我明年所依赖的课程,我希望他们现在有一个引导我的方向。
-
仅仅因为他们正在弃用它并不意味着你不能继续使用它一段时间。
-
标准库中的迭代器已经选择了选项 1。
-
@LokiAstari - 它甚至比这更弱。从形式上讲,弃用是一种通知,表示将来某些东西可能会消失。就这样。请注意,自 1998 年以来,标准 C 标头已在 C++ 中弃用。
-
@JonathanMee - 我使用
std::iterator因为它很方便。我会继续使用它,直到我不能为止。
标签: c++14 c++17 c++17 c++ iterator standards deprecated c++17