• Traits classes make information about types available during compilation. They're implemented using templates and template specializations.

  • In conjunction with overloading, traits classes make it possible to perform compile-time if...else tests on types.