OK now how do you [...] or via typecasting.
This could not be done without templates. The best you could hope for is supporting a subset of the possibilities. Trying to do this would be tedious in the extreme. How is this supporting your claim that "templates are especially tedious"?
The interesting applications of templates involves interface and implementation generation of arbitrarily many distinct classes from arbitrarily many building blocks. This is tedious. It can't be done without templates. This is not what you've compared to normal classes. The next C++ standard will greatly simplify this sort of thing with variadic templates and new reference types. Rejoice!Quote:
However [...] complexities I'm warning about.
I'm not sure what you are asking. I think type lists and simple forwarding will get you what you want. If you want to ask more about this start a new thread.Quote:
In particular if you want to hardwire [...] parameterized types.
Traits store arbitrary interface and implementation guidelines according to some expected interface as specified by the target type that other templates then use to determine their interface and implementation.
Policies are similar in that they store arbitrary interface and implementation guidelines. They differ in that they have nothing to do with the target type. Policies are utilized to provide a choice between differing interface and implementation guidelines targeted solely to the programmers discretion.