class C
{
/* No need to define a default constructor; one is implicitly
defined */
/* No need to define a copy constructor; one is implicitly defined
*/
/* No need to define a copy-assignment operator; one is implicitly
defined */
/* No need to define a destructor; one is implicitly defined */
};
C c1;
C c2;
c1 += c2; /* Damn! */
One annoying feature is that += isn't by default equivalent to x = x +
c.
Another more deep-seated problem, which C shares, is that there is no
concept of "scalar". So as you add types you end up with N^2
requirements for arithemetical-type functions.
However you wouldn't expect arithmetical operators by default. They
don't always makes sense.