forcing compile time function execution
Vladimir Panteleev
vladimir at thecybershadow.net
Tue Dec 27 11:20:02 PST 2011
On Tuesday, 27 December 2011 at 19:03:07 UTC, Artur Skawina wrote:
> Umm, the point was to *avoid* the extra useless wrapper.
Sorry, I thought you were writing one wrapper per CTFE-able
function.
> Hence the "@compile" attribute suggestion, and list selection.
Presently I don't see how your suggestion justifies an addition
to the language itself, given that a wrapper is easy to
implement. Furthermore, it would be yet another thing that
requires people to inspect referenced code to keep track of
what's going on (with @compile in the language, you can't inspect
a function's body and know if any function call is at runtime or
compile-time).
> (I actually tried something similar to Now(), but that only
> obfuscates the code even more, for no gain)
If you don't like Now, let's go back to the per-function wrapper
idea.
import std.math;
string makeNow(string name) { return `template `~name~`(X...) {
enum `~name~` = `~name~`Impl(X); }`; }
mixin(makeNow("f"));
double fImpl(double f) { return sin(f); }
enum sin3 = f!3;
More information about the Digitalmars-d
mailing list