为什么基于常量范围不用于使用const_iterator?
Why doesn't const range based for use const_iterator?
如果我只想按对象公开常量迭代器:
class MyList
{
public:
const_iterator begin() const;
const_iterator end() const;
private:
iterator begin();
iterator end();
};
看来我应该能够使用基于的范围的常量版本
MyList list;
...
for(const auto & value : list)
{
}
编译器抱怨begin
和end
是私有的。为什么不使用const_iterator
版本?
重载解析是在访问检查之前完成的,以避免仅仅通过更改访问说明符就神奇地破坏代码。
表达式(其类型)之后发生的情况将被忽略。如果需要,编译器将尝试在之后找到一个有效且明确的转换序列。
因此,选择了非const
-对象的begin
和end
,然后编译器会碰到那个大的private
-符号。
相关文章:
- 需要帮助在 c++ 中将字符串转换为字符 ----错误 "const char *" 类型的值不能用于初始化 "char" 类型的实体
- 使用 fopen 打开 .pak 文件并使该文件应用于 const 无符号字符* (C++)
- "const wchar_t *" 类型的值不能用于初始化类型 "const PWSTR" 的实体
- 将 std::string 转换为 const char* 用于 printf 消耗
- 将非 const 对象用于 const 参数
- 如何键入用于const对象的自定义io操纵器
- 具有字符串文本构造函数的类不适用于 const 引用初始化
- const 数组,用于在数组长度定义中使用其元素或为模板参数提供值
- 用于指针的rvalue/const lvalue
- C 编译器可以执行用于返回值的命名const变量的RVO
- char,const char*阵列问题,用于mqtt client.publish
- 如何将 const 应用于 C++ 中参数列表之外的模板参数类型?
- 返回 std::p air<const CustomClass &, bool> 用于搜索函数中的失败情况,当 CustomClass 是抽象基类时
- std::result_of 应用于 const 重载方法
- 转换为"const Y"不适用于 clang 上的"R&&"
- 为什么std::distance不适用于const和nonconst迭代器的混合
- C++构造函数--通过引用传递仅适用于const.为什么?
- 应用于const和非const对象的引用返回方法
- 按值可变的 lambda 捕获不适用于 const &?
- 为什么“equal”在C++中适用于const char*