【发布时间】:2012-03-09 23:00:12
【问题描述】:
我有一个带有这些运算符的struct(给定一些类型T):
T& operator[](size_t i) { return write(i); }
const T& operator[](size_t i) const { return get(i); }
当我通过 [i] 访问 this 的非常量对象时,它会始终使用非常量 operator[] 还是会自动查看需要哪个对象(例如,如果 const-version 是“足够的”)拿那个?那里有什么规则?大多数编译器(我主要关心 Clang、最近的 GCC 和最近的 MSVC)在那里的行为是否相同?
背景:write(i) 的成本可能比get(i) 高得多。我什至有一些行为略有不同的代码,write(i) 可能会触及一些文件,设置一些修改标志或其他什么。
【问题讨论】:
标签: c++ operator-overloading constants