automatic traits algorithms.
To achieve the maximal efficiency of traits approach is necessary to change name type from std::string to const char*. Moreover, I had to make the default trait public in another way. There is a function creating and returning the generated Trait. At first sight is seemed to me as bad idea, but the compiler can not work so efficiently with it. Thus, it is better to have static function which generates the object of traits.