
On 23-May-2001, D. Tweed
On 22 May 2001, Carl R. Witty wrote:
"D. Tweed"
writes: In my experience the C++ idiom `you only pay for what you use' (==> templates are essentially type-checked macros) and the fact most compilers are evolved from C compilers makes working with templates a real pain in practice.
I'm not sure what you mean by type-checked here. Templates are not type-checked at definition time, but are type-checked when they are used; the same is true of ordinary macros.
I was thinking in terms of (to take a really simple example)
template<class T> void initialiseArray(T** arr,const T& elt,int bnd) ... If I try and use intialiseArray(<obj of type foo>,<obj of type bar>), with the template function I get the error when passing in the parameters;
In other words, *calls to* template functions are type-checked at compile time.
However, *definitions of* template functions are only type-checked when they
are instantiated.
--
Fergus Henderson