相关疑难解决方法(0)

为什么从C++ 11中删除了对范围访问?

我刚刚发现,在某一点上,C++ 11草案具有std::begin/ std::end重载std::pair,允许将一对迭代器视为适合在基于范围的for循环中使用的范围(N3126,第20.3.5.5节),但这有自从被删除.

有谁知道为什么它被删除了?

我发现删除非常不幸,因为似乎没有其他方法可以将一对迭代器视为范围.确实:

  • 在基于范围的for循环中开始/结束的查找规则表示在1)中作为范围对象2)的成员函数查找开始/结束作为"关联命名空间"中的自由函数
  • std::pair 没有开始/结束成员函数
  • 通常唯一关联的命名空间std::pair<T, U>是namespace std
  • 我们不允许超载std::begin/ std::endstd::pair自己
  • 我们不能专门化std::begin/ std::endfor std::pair(因为专业化必须是部分的,而且不允许使用函数)

还有其他一些我失踪的方式吗?

c++ foreach range c++11 std-pair

54
推荐指数
3
解决办法
8009
查看次数

标签 统计

c++ ×1

c++11 ×1

foreach ×1

range ×1

std-pair ×1