Как правило, справочная оболочка не может поддерживать все операции базового типа. Например, нет способа автоматически поддерживать функции-члены. Подстрочный оператор - обычная операция, поэтому нет веских причин для его поддержки. Конечно, мы можем получить operator[]
, который вызывает базовый operator[]
, но тогда почему бы не поддержать operator+
? operator==
? Как насчет begin
и end
? :)
Перегрузка оператора вызова функции имеет важное следствие: класс становится типом функтора. Это может быть полезно для многих ситуаций. Например:
std::for_each(first, last, std::ref(stateful_functor));
Это веская причина для перегрузки operator()
.