On 23-May-2001, D. Tweed <tweed@cs.bris.ac.uk> wrote:
On 22 May 2001, Carl R. Witty wrote:
"D. Tweed" <tweed@cs.bris.ac.uk> 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 <fjh@cs.mu.oz.au> | "I have always known that the pursuit | of excellence is a lethal habit" WWW: <http://www.cs.mu.oz.au/~fjh> | -- the last words of T. S. Garp.