On 8/14/15 6:25 PM, DarthCthulhu wrote:
On Friday, 14 August 2015 at 12:40:08 UTC, Steven Schveighoffer wrote:

I would do it this way:

// at module level
debug(logging) {
    Logger logger;
    static this() { logger = new Logger;}
}


By 'module level', I assume you mean in the module that defines the
Logger class? An 'import debug.logger' or somesuch would then give all
relevant modules access, correct?

I mean, in global scope (which is defined as being part of the module). Not inside a class/struct/function.

Is the compiler smart enough to compile out all the symbols associated
with the logger if it is never instantiated?

If it's never instantiated, and it's a template, then it will not be compiled in.

If it's not a template, it could potentially make it into the binary.

-Steve

Reply via email to