Specializing on Compile Time Constants

Jacob Carlborg doob at me.com
Mon Oct 12 14:54:46 PDT 2009


On 10/12/09 23:49, dsimcha wrote:
> I'm working on a mathematical expression interpreter for D, which would allow
> for closed form mathematical expressions to be specified as string literals at
> runtime and be evaluated.  For example:
>
> MathExp myExpression = mathExp("x^2 + e^cos(-x) - 2 * sqrt(pi)", "x");
> writeln(myExpression(2));  // Does exactly what you think it does.
>
> I've found the syntax so convenient that I'd like to transparently specialize
> it on strings known at compile time.  The idea is that, when the expression is
> hard-coded, you will still be able to use the MathExp interface, but your
> expression will evaluate at the full speed of a statically compiled function.
>   Is there any way to test whether the value of an argument to a template
> function is known at compile time and specialize on this?

Doesn't all values to a template have to be known at compile time



More information about the Digitalmars-d mailing list