Reference counted containers prototype

Peter Alexander peter.alexander.au at gmail.com
Tue Dec 27 07:34:50 PST 2011


On 27/12/11 3:10 PM, Andrei Alexandrescu wrote:
> On 12/27/11 4:32 AM, Peter Alexander wrote:
>> On 27/12/11 3:05 AM, Andrei Alexandrescu wrote:
>>> On 12/26/11 8:23 PM, Peter Alexander wrote:
>>>> I am
>>>> not convinced that it can be used seamlessly without some relatively
>>>> large changes to the language.
>>>
>>> I repeat that opDispatch and auto ref were invented for this, so
>>> anything that doesn't work now is a bug. There are no changes needed to
>>> the language, only fix the bugs :o).
>>
>> How do you call template member functions of the held object without
>> changing opDispatch?
>
> The idea is to pass the entire template instantiation as the string.
>
> obj.foo!(bar, baz)(a, b);
>
> ->
>
> obj.opDispatch!("foo!(bar, baz)")(a, b);
>
>
>
> Andrei

I don't believe this will work in general when the template parameter 
passed in requires name look-up in the local scope.


struct Foo
{
     int bar(alias f)() { return f(); }
}

void main()
{
     static int fun() { return 1; }

     RefCounted!Foo foo;
     writeln(foo.bar!fun()); // "fun" isn't in scope when mixed in.
}


More information about the Digitalmars-d mailing list