Unable to instantiate template with same name as function

Daniel Kozak via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Wed Mar 2 23:23:15 PST 2016



Dne 3.3.2016 v 07:12 Shriramana Sharma via Digitalmars-d-learn napsal(a):
> Hello. I have a function I want to make CTFE-able as a template.
>
> string ta(string s) { return s ~ "1"; }
> template ta(string s) { enum ta = ta(s); }
> void main() { string s = ta!"s"; }
>
> Compiling the above I get the errors:
>
> <src>(2): Error: forward reference of variable ta
> <src>(3): Error: template instance <src>.ta!"s" error instantiating
>
> Please clarify what I am doing wrong? Thanks!
You cant use same name for both:

import std.stdio;

auto ta2(string s) { return s ~ "1"; }
enum ta(string s) = ta2(s);
void main() {
     string s = ta!"s";
     writeln(s);
}


More information about the Digitalmars-d-learn mailing list