>> Traits too? You really do love template solutions, don't you?
As a matter of fact, I do.
The cool thing about traits is that you can write an entire library code and include not a single header file! As an example, I wrote a large integer class that provided full support for I/O and strings, and even allowed assignment/construction from arbitrary types (such as string) - all without any header files whatsoever. So yes, it's extremely flexible, and well worth the effort in many cases.