I want to set up a way to use the following patterns:

@foo
@foo(val)

Is there a way I can define foo such that this works?

I tried this:

struct Foo(T)
{
   T val;
}

auto foo(T)(T val) { return Foo!T(val); }

@property foo() { return Foo!int(0); }

So this works:

@foo() int x;
@foo(1) int y;

But this doesn't:

@foo int z; // Error: cannot interpret foo(T)(T val) at compile time

Is there a way I can do this while keeping the name the same for both options?

If I have different names, I can get it to work also.

-Steve

Reply via email to