CTFE writeln again (__ctfeWriteln)

KennyTM~ kennytm at gmail.com
Sun Aug 7 15:25:22 PDT 2011


On Aug 8, 11 05:56, bearophile wrote:
> KennyTM~:
>
>> So I go for my 2nd alternative, which is to add a magic function __ctfeWriteln
>> that does the same.
>>
>> In my implementation, __ctfeWriteln will print the interpreted arguments
>> to stdmsg when CTFE-ed, and is a no-op in runtime (it can be configured
>> to throw an exception or actually print the arguments or anything you like).
>
> Important: if there is a single function then I do *not* want it to print a newline. Adding a newline when you need it is much simpler than removing it if you do not want it. If you really want a newline too, then create two functions, (similar to write and writeln), but the most important is the one without newline.
>
> What's the purpose of the two leading underscores? I prefer it without them. This is supposed to be a clean and nice function, not an unsafe ugly thing :-) So I think a "ctfeWrite" name is better.
>

Two leading underscores means it's a reserved identifier which should 
have no chance of collision.  It does not mean unsafe.  Also, it's named 
after the existing identifier '__ctfe'.

> Generally I'd like this functions to print equally at compile-time and run-time, but I see there are some problems in doing this...
>
> If the function"ctfeWrite" becomes too much complex (to print arbitrary things), then for me it's acceptable it to print just strings too (with no newline added).
>

__ctfeWrite is not complex, but I don't see the need for it.

> Bye and thank you for your work,
> bearophile



More information about the Digitalmars-d mailing list