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.