Johannes Pfau wrote something like this, in the logger thread:
If you write code like this:
void log(string file = __FILE__)() //A template
{
logImpl(file);
}
void logImpl(string file){} //Not a template
The compiler can always inline the log template. So there's no
template bloat as there will be effectively no instances of log.
Instead it will be inlined and logImpl will be called directly
just as
if you manually called logImpl(__FILE__).
I'm trying something like that, but with __LINE__ in addition to
put a little more pressure:
void log(string file = __FILE__, int line = __LINE__)(){
logImpl(file, line); }
void logImpl(string file, int line){}
I've then compiled a single file filled with 'log()', but I've
found from 'nm' that the text section is still full of templated
functions.
So the question is: is Johannes trick supposed to work, or
there's something I don't understand well about template
expansion and inlining?
Thanks, Paolo