On Feb 21 05:26, Warren Young wrote:
Corinna Vinschen wrote:
Really? Show me an example which isn't much harder to understand than
the equivalent C code.
template <class T>
std::string foo(const T& x)
{
std::ostringstream outs;
outs << x << and << maybe << other << stuff;
return outs.str();
}
(Aside: This looks pointlessly trivial, but it's a simplified version of
real code in MySQL++ (http://tangentsoft.net/mysql++/). It would just
muddy the waters to talk about the reason MySQL++ does this.)
To do that with C functions (maybe strto*() instead of printf()) you'd have
to create a set of template specializations for every T you know about to
call the right C function with the right arguments. Any time you add to
the list of supported T's, you have to add template specializations.
Argh. Using templates as an example for simplicity is somewhat daring.
Templates, liberally used, are a good way to make code unreadable.
IMHO.
FWIW.
YMMV.
YMCA.
Corinna