Tag: 标准对

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

我刚刚发现,C ++ 11草案有一个std::begin / std::end重载std::pair ,允许将一对迭代器视为适合在基于范围的for循环中使用的范围(N3126,第20.3.5.5节),但是这已经被删除。 有谁知道为什么它被删除? 我发现删除非常不幸,因为它似乎没有其他的方式来处理一对迭代器作为范围。 确实: 在基于范围的for循环中,begin / end的查找规则表示在1)中将begin / end作为范围对象的成员函数2)作为“关联名称空间”中的自由函数进行查找 std::pair没有开始/结束成员函数 std::pair<T, U>唯一相关的命名空间通常是命名空间std 我们不允许自己为std::pair加载std::begin / std::end 我们不能将std::begin / std::end专门化为std::pair (因为专精必须是部分的,而且不允许用于函数) 有没有其他的方式,我失踪了?