Why do several of the standard operators not have standard functors?

Viewed 1095

We have:

  • std::plus (+)
  • std::minus (-)
  • std::multiplies (*)
  • std::divides (/)
  • std::modulus (%)
  • std::negate (-)
  • std::logical_or (||)
  • std::logical_not (!)
  • std::logical_and (&&)
  • std::equal_to (==)
  • std::not_equal_to (!=)
  • std::less (<)
  • std::greater (>)
  • std::less_equal (<=)
  • std::greater_equal (>=)

We don't have functors for:

  • & (address-of)
  • * (dereference)
  • []
  • ,
  • bitwise operators ~, &, |, ^, <<, >>
  • ++ (prefix/postfix) / -- (prefix/postfix)
  • sizeof
  • static_cast / dynamic_cast / reinterpret_cast / const_cast
  • c style casts
  • new / new[] / delete / delete[]
  • all of the member function pointer operators
  • all of the compound assignment operators.

Is there a reason we don't have those, or is it just an oversight?

6 Answers
Related