Python-style string multiplication
Code duplication:

There is a code duplication in the overloads of the operator. I believe that the second should call the first with parameters swapped, or vice versa.

Last feature:

The last thing I would add, aside from what @Justin mentioned, is some support for std::basic_string&lt;&gt;. Although it will introduce abundance of template parameters, the code will be more or less generic.

Do note that in this case reserving might make sense.