|
|
Warp wrote:
> Darren New <dne### [at] sanrrcom> wrote:
>> OK, that would be my second statement, then. The template is actually
>> getting recompiled down to object code each time you instantiate it,
>> even if it's an "export" template.
>
> But it's compiled only once even if the same template function is used
> with a given type at several places in the program. (Without the export
> template mechanism the function would be compiled every time it's used.)
Even if the places it's used are in different compilation units? As in,
if I invoke the compiler 12 times with 12 instantiations of the same
template in 12 different .cpp files, isn't that code going to have to
get translated into object code 12 different times?
To phrase it differently, say it took one minute to compile the program
with the template inline. Could I compile 12 compilation units that
instantiate the template in 2 minutes? Or is it going to take on the
order of 12 minutes?
> And, as I said, I can imagine that compilers could implement optimizations
> where they cache compiled export templates. IOW, if you compile your project
> for the first time, the template code gets compiled, but if you recompile
> the project a second time, the already-compiled template code is used.
> (But I doubt any C++ compiler so far uses this kind of optimization.)
From the link Fredrik posted, it looks like you can't really do this,
because the environment that invokes the instantiation may be different.
(E.g., there may be different overloaded functions in scope that would
change the meaning of the template.)
--
Darren New / San Diego, CA, USA (PST)
"That's pretty. Where's that?"
"It's the Age of Channelwood."
"We should go there on vacation some time."
Post a reply to this message
|
|