Make alias parameter optional?

Ary Manzana ary at esperanto.org.ar
Sat Feb 25 15:10:51 PST 2012


On 2/25/12 7:31 PM, Robert Rouse wrote:
>
>
> On Saturday, 25 February 2012 at 22:12:55 UTC, Ali Çehreli wrote:
>> On 02/25/2012 01:55 PM, Robert Rouse wrote:
>>> On Saturday, 25 February 2012 at 18:54:35 UTC, Trass3r wrote:
>>>> void foo(T, T2, alias thing = (){})(T a, T2 b)
>>>> {
>>>> thing();
>>>> }
>>>>
>>>> void bar(){}
>>>>
>>>> void main()
>>>> {
>>>> foo!(int,int,bar)(1,2);
>>>> foo(1,2);
>>>> }
>>>
>>> Cool. Didn't know you can do that, but I guess it makes sense that it
>>> would work that way.
>>>
>>> The only thing I wish for is if I didn't have to explicitly define what
>>> T and T2 were and I could just do
>>>
>>> foo!(bar)(1,2);
>>
>> The following works and is news to me. Apparently template parameters
>> with default values need not be at the end of the template parameter
>> list:
>>
>> void foo(alias thing = (){}, T, T2)(T a, T2 b)
>> {
>> thing();
>> }
>>
>> void bar(){}
>>
>> void main()
>> {
>> foo!(bar)(1,2);
>> }
>>
>> Ali
>
> This means that D can simulate Ruby blocks more than I thought. That's
> pretty awesome. I'm loving D more every day.

How's that like a Ruby block?


More information about the Digitalmars-d-learn mailing list