On Wednesday, 10 September 2014 at 16:34:06 UTC, Andrei
Alexandrescu wrote:
One possibility is to have the first function be a one-liner
that forwards to another. That way there will be less code
bloating.
void fun(uint l = __LINE__, A...)(A... as) {
funImpl(l, as);
}
private void funImpl(A...)(uint line, A...) {
... bulk of the code goes here ...
}
Those are already small functions AFAIK (I was speaking about
symbol bloat, not code bloat). It does not help with compilation
issue though - each logging call creates a totally new template
instance which means allocating new object for DMD internal
representation and running semantic phase for it. And mature
applications can have thousands of logging calls. I have yet to
run tests to see actual impact but it concerns me from the pure
DMD internals point of view.