Can't read a constant value in compile time?
    Adnan 
    contact.adnan.02 at protonmail.com
       
    Tue Nov 20 18:54:58 UTC 2018
    
    
  
Godbolt: https://godbolt.org/z/SWWOu7
When I write `something!(aNumber)()` and if a number is an 
immutable/enum it should be able to be read at compile time, 
right? Why is this different?
auto fizzbuzz(uint N)() {
     static string accumulate;
     return fizzbuzz!N(accumulate);
}
auto fizzbuzz(uint N)(ref string result) if (N % 3 && N % 5) {
     import std.conv : to;
     result ~= N.to!string ~ "\n";
     return fizzbuzz!(N - 1)(result);
}
auto fizzbuzz(uint N)(ref string result) if (!(N % 15)) {
     result ~= "FizzBuzz\n";
     return fizzbuzz!(N - 1)(result);
}
auto fizzbuzz(uint N)(ref string result) if (!(N % 3) && N % 5) {
     result ~= "Fizz\n";
     return fizzbuzz!(N - 1)(result);
}
auto fizzbuzz(uint N)(ref string result) if (!(N % 5) && N % 3) {
     result ~= "Buzz\n";
     return fizzbuzz!(N - 1)(result);
}
auto fizzbuzz(uint N : 0)(ref string result) {
     return result;
}
void main() {
     import std.stdio : writeln;
     enum lmao = fizzbuzz!50();
     lmao.writeln();
}
    
    
More information about the Digitalmars-d-learn
mailing list