On Tue, Aug 21, 2012 at 6:43 AM, Bobby Bingham <[email protected]> wrote:
> I'm just getting started with D, and was playing around with string
> mixins. I've hit a snag, and have reduced it to a minimal test case:
>
> import std.conv;
>
> string test()
> {
> return to!string(0.0);
> }
>
> immutable auto testvar = mixin(test());
>
> I guess converting a double to a string can't be done at compile time
> because it requires calling the C snprintf function? It compiles fine
> if I replace the 0.0 with an int literal. Is there any way around
> this limitation?
A possibility is to use a function template, passing the double as a
template argument:
string test(double d)() // d is a template argument
{
return d.stringof;
}
enum testvar = mixin(test!(3.14));
void main()
{
pragma(msg, testvar);
}