use template function without assignment
Namespace
rswhite4 at googlemail.com
Tue Jul 30 00:12:10 PDT 2013
On Monday, 29 July 2013 at 23:09:20 UTC, JS wrote:
> I have created a template Pragma that emulates pragma but
> better, the problem is that I have to assign it to something
> which is very redundant in my code:
>
> enum temp = Pragma!(msg)
>
> e.g.,
>
> template Pragma(alias amsg)
> {
> string Pragma(string file = __FILE__)
> {
> pragma(msg, amsg);
> return "";
> }
> }
>
> 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. It does have an
> effect but what it is complaining about is exactly what I want.
>
> I've tried all kinds of combinations(mixins work but I then
> can't ise __FILE__) and nothing works. Maybe someone has an
> idea.
You could call your template in a static CTor:
----
import std.stdio;
template Pragma(alias amsg)
{
void Pragma(string file = __FILE__)
{
pragma(msg, amsg);
}
}
static this() {
Pragma!("foo")();
}
void main()
{
writeln("Hello world!");
}
----
Maybe this helps?
More information about the Digitalmars-d-learn
mailing list