How do you put log calls in constructors when they may be created in a static context?

Jonathan M Davis newsgroup.d at jmdavisprog.com
Wed Aug 8 23:47:22 UTC 2018


On Wednesday, August 8, 2018 3:54:34 PM MDT aliak via Digitalmars-d-learn 
wrote:
> I'm trying to debug stuff, so I want to add verbose logging
>
> struct S(T) {
>    this() {
>      writeln("created S(T) with properties and ID");
>    }
> }
>
> static a = S!int(); // bah
>
> I guess users can call this code from any context, but when i'd
> also like to see the log output for debugging purposes. Is there
> a way around this?
>
> Can I maybe only do a writeln in a non compile-time context?

if(__ctfe)
{
    // code here will execute if this is encountered during CTFE
}
else
{
    // code here will execute if this is encountered outside of CTFE
}

- Jonathan M Davis





More information about the Digitalmars-d-learn mailing list