On Tuesday, 11 February 2014 at 00:00:06 UTC, Matthew Dudley
wrote:
Here's the gist of what I'm trying to do:

struct Foo
{
public:
        int i;
        int j;

        static opCall(int i)(int j, int k)
        {
                return Foo(i+j,i+k);
        }
}

void main()
{       
auto bob = Foo!(1)(2,3); //Error: template instance Foo!1 Foo is not a template declaration, it is a struct
}


I'm trying to template the static opCall function, not the struct. Is there a way to do disambiguate between the two?

You can't do this! you are calling Foo as if it is a template...
hence the error!

Maybe the only solution is a new symbol such as

Foo!!(1)(2,3)

where !! tells the compiler that you are referencing an implicit
function call and not a template. Would be an easy solution.

Reply via email to