7
It's great that you provide operator overloads, but it's also nice to have names - The Old New Thing
(devblogs.microsoft.com)
The center for all discussion and news regarding C++.
I had designed a system with what I thought was a good API, wrote the test for it and I was satisfied how simple it was to use the thing but then, when it came to integrate it, it was clunky and no good way to actually use the system.
I don't think it's always obvious when an API is good or bad, even with tests.