use template function without assignment
JS
js.mdnq at gmail.com
Tue Jul 30 14:05:02 PDT 2013
On Tuesday, 30 July 2013 at 20:34:32 UTC, Ali Çehreli wrote:
> On 07/30/2013 12:09 PM, JS wrote:
>
> > I already stated why this is not a proper example, I'm not
> using Pragma
> > in run time code(for lack of a better term).
> >
> > module main;
> >
> > import std.stdio;
> >
> >
> > template Pragma(alias amsg)
> > {
> > void Pragma(string file = __FILE__)
> > {
> > pragma(msg, amsg);
> > }
> > }
> >
> > template t()
> > {
> > Pragma!("help, this does not work!!!!!!!!!");
> > }
> >
> > void main()
> > {
> > enum msg = "hello";
> > Pragma!msg;
> > t!();
> > }
>
> Thank you. Now we have something to work on. The program above
> produces the following error:
>
> Error: no identifier for declarator Pragma!"help, this does not
> work!!!!!!!!!"
>
> The error is fixed by adding a mixin:
>
> mixin Pragma!("help, this does not work!!!!!!!!!");
>
Or just assigning it to enum... both are not great solutions...
> Despite another error it actually works:
>
> hello
> help, this does not work!!!!!!!!! <-- IT WORKED
> Error: t!() has no effect
>
> The second error is fixed by another mixin:
>
> mixin t!();
>
> Perhaps the example is too simplistic. Still, let's stay with
> it for further issues.
>
> Ali
I think that such behavior should not be an error but possibly a
warning, if at all.
And if you cared to read what I initially posted you would
realize I already explained the same thing. The example maybe
more clear but I stated, maybe in some convoluted and jumped way,
that Pragma doesn't work *in* templates..
"When I try to use void instead of string and do something like
Pragma!(msg)
I get an error that the template has no effect."
and later
"It's goal is to debug templates and essentially
just wrapping pragma to supply the __FILE__ info automatically.
e.g., instead of having to do
pragma(msg, __FILE__~amsg);
I want to do Pragma!(amsg);
"
More information about the Digitalmars-d-learn
mailing list