Getting the error from __traits(compiles, ...)

grauzone none at example.net
Fri Nov 13 05:54:18 PST 2009


Yigal Chripun wrote:
> grauzone wrote:
>> Yigal Chripun wrote:
>>>
>>> I really wish this was folded into the language by allowing structs 
>>> to implement interfaces.
>>>
>>> interface Range(T) {
>>>   bool empty();
>>>   void popFront();
>>>   T front();
>>> }
>>>
>>> struct MyRange(T) : Range!(T) { ... } // checked by compiler
>>>
>>
>> One problem with this was that arrays wouldn't automagically be ranges 
>> anymore. Right now, "int[] a; a.popFront();" works, because std.array 
>> has a global function popFront. Some old language hack turns 
>> a.popFront into popFront(a).
> 
> you're talking about this construct:
> int[] arr;
> void foo(int[], params) {}  => arr.foo(params);
> 
> This should not be considered a hack but rather should be a feature 
> extended for all types. see extension methods in C#.

I'd rather have some sort of open types, which are the clean version of 
this hack.

> I also think that arrays (containers) must be distinct from 
> slices/ranges (views).



More information about the Digitalmars-d mailing list