D's Auto Decoding and You

Vladimir Panteleev via Digitalmars-d-announce digitalmars-d-announce at puremagic.com
Tue May 17 11:23:36 PDT 2016


On Tuesday, 17 May 2016 at 17:26:59 UTC, Steven Schveighoffer 
wrote:
> On 5/17/16 1:18 PM, Vladimir Panteleev wrote:
>> On Tuesday, 17 May 2016 at 14:06:37 UTC, Jack Stouffer wrote:
>>> http://jackstouffer.com/blog/d_auto_decoding_and_you.html
>>
>> Thanks for writing this. Great article.
>>
>> Some remarks:
>>
>>>    static assert(is(typeof(s.front()) == dchar));
>>
>> I believe .front is a property (so some ranges can implement 
>> it as a
>> field, not a @property function). Hence, no parens.
>
> Right, but s is a string. So front is a function.

Then what happened to writing generic code?

> There is an inconsistency in the compiler for this. If s.front 
> is a function is(typeof(s.front)) will not be what front 
> *returns*, but the function type itself. Unless you tag with 
> @property. However, it's perfectly legal for a front function 
> not to be tagged @property.

There is a simple answer to this, and it is to either use 
ElementType or do what it does (is(typeof(R.init.front.init) T)).


More information about the Digitalmars-d-announce mailing list