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