sizeof returns the size of a data type in bytes so you can't overload it because you can't know the size of the types you define, the scope resolution operator :: can't be overloaded because it should keep its meaning, you can't overload .* but you should be able to overload ->*