text: /* A collection of all the different known operator prototypes in C++ */
  
  // arithmetic operators
  Type1 operator+(const Type1& a);                           // +a
  Type1 operator+(const Type1& a, const Type2& b);           // a + b
  Type1& operator++(Type1& a);                               // ++a
  Type1 operator++(Type1& a, int);                           // a++
  Type1& operator+=(Type1& a, const Type1& b);               // a += b
  Type1 operator-(const Type1& a);                           // -a
  Type1& operator--(Type1& a);                               // --a
  Type1 operator--(Type1& a, int);                           // a--
  Type1& operator-=(Type1& a, const Type1& b);               // a -= b
  Type1 operator*(const Type1& a, const Type1& b);           // a * b
  Type1& operator*=(Type1& a, const Type1& b);               // a *= b
  Type1 operator/(const Type1& a, const Type1& b);           // a / b
  Type1& operator/=(Type1& a, const Type1& b);               // a /= b
  Type1 operator%(const Type1& a, const Type1& b);           // a % b
  Type1& operator%=(Type1& a, const Type1& b);               // a %= b
  
  // comparison operators
  bool operator<(const Type1& a, const Type1& b);            // a < b
  bool operator<=(const Type1& a, const Type1& b);           // a <= b
  bool operator>(const Type1& a, const Type1& b);            // a > b
  bool operator>=(const Type1& a, const Type1& b);           // a >= b
  bool operator!=(const Type1& a, const Type1& b);           // a != b
  bool operator==(const Type1& a, const Type1& b);           // a == b
  
  // logical operators
  bool operator!(const Type1& a);                            // !a
  bool operator&&(const Type1& a, const Type1& b);           // a && b
  bool operator||(const Type1& a, const Type1& b);           // a || b
  
  // bitwise operators
  Type1 operator<<(const Type1& a, const Type1& b);          // a << b
  Type1& operator<<=(Type1& a, const Type1& b);              // a <<= b
  Type1 operator>>(const Type1& a, const Type1& b);          // a >> b
  Type1& operator>>=(Type1& a, const Type1& b);              // a >>= b
  Type1 operator~(const Type1& a);                           // ~a
  Type1 operator&(const Type1& a, const Type1& b);           // a & b
  Type1& operator&=(Type1& a, const Type1& b);               // a &= b
  Type1 operator|(const Type1& a, const Type1& b);           // a | b
  Type1& operator|=(Type1& a, const Type1& b);               // a |= b
  Type1 operator^(const Type1& a, const Type1& b);           // a ^ b
  Type1& operator^=(Type1& a, const Type1& b);               // a ^= b
  
  // other operators
  Type1& Type1::operator=(const Type1& b);                   // a = b
  void operator()(Type1& a);                                 // a()
  const Type2& operator[](const Type1& a, const Type1& b);   // a[b]
  Type2& operator*(const Type1& a);                          // *a
  Type2* operator&(const Type1& a);                          // &a
  Type2* Type1::operator->();                                // a->b
  Type1::operator type();                                    // (type)a
  Type2& operator,(const Type1& a, Type2& b);                // a, b
  void *Type1::operator new(size_t x);                       // new Type1
  void *Type1::operator new[](size_t x);                     // new Type1[n]
  void *Type1::operator delete(size_t x);                    // delete a
  void *Type1::operator delete[](size_t x);                  // delete [] a
  
  // Misc examples
  int& operator*();
  Foo::operator const char *();
  Foo::operator const Bar&();
  
  