On Wednesday, 8 August 2018 at 23:47:22 UTC, Jonathan M Davis
wrote:
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
That won't work because __ctfe is not readable at compile time.
And I don't want that writeln there when there's compile time
evaluation because errors.
1) I want to be able to log when a type is created
2) I want to declare a locally static runtime type
Ie:
import std.stdio;
struct S(T) {
T i;
this(T i) {
this.i = i;
writeln("log it");
}
}
int f() {
static x = S!int(3);
return x.i++;
}
void main() {
writeln(f); // print 3
writeln(f); // print 4
}