Templated static opCall in non-templated struct
Matthew Dudley
pontifechs at gmail.com
Tue Feb 11 18:06:46 PST 2014
On Wednesday, 12 February 2014 at 01:59:54 UTC, Frustrated wrote:
> 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.
Well since Foo isn't templated, shouldn't the compiler know to
apply the template to the function?
More information about the Digitalmars-d-learn
mailing list