template ref parameter

Regan Heath regan at netmail.co.nz
Wed Nov 21 04:39:12 PST 2012


On Wed, 21 Nov 2012 12:32:24 -0000, Regan Heath <regan at netmail.co.nz>  
wrote:

> On Wed, 21 Nov 2012 12:30:08 -0000, Regan Heath <regan at netmail.co.nz>  
> wrote:
>
>> On Wed, 21 Nov 2012 12:02:45 -0000, Jack Applegame  
>> <japplegame at gmail.com> wrote:
>>
>>> void foo(ref int a) { a--; }
>>> struct functor(A...) {
>>>   void function(A) functor;
>>> }
>>> functor!int f;    // functor!(ref int) - wrong
>>> f.functor = &foo; // Error: cannot implicitly convert expression (&  
>>> foo) of type void function(ref int a) to void function(int)
>>
>> Hmm.. well I got past your initial problem, but I have a new one..
>>
>> alias void function(ref int) funcType;
>>
>> void foo(ref int a) { a--; }
>>
>> struct functor(A...) {
>>    A func;
>> }
>> void main()
>> {
>>    functor!funcType f;
>>    f.func = &foo; //Error: f.func is not an lvalue
>> }
>
> Just realised what is happening here. "f.func = " is trying to call the  
> function, and assign &foo to the "void" result.

Or not, duh! "A..." grr.

alias void function(ref int) funcType;

void foo(ref int a) { a--; }

struct functor(A...) {
   A[0] func;
}
void main()
{
   functor!funcType f;
   f.func = &foo;
}

R

-- 
Using Opera's revolutionary email client: http://www.opera.com/mail/


More information about the Digitalmars-d-learn mailing list