My ACCU 2016 keynote video available online
Walter Bright via Digitalmars-d-announce
digitalmars-d-announce at puremagic.com
Fri May 20 12:34:11 PDT 2016
On 5/20/2016 6:47 AM, H. S. Teoh via Digitalmars-d-announce wrote:
> Not to mention inconsistency in what exactly
> is being tested for: if you want to check if something is an input
> range, do you use is(typeof(R.empty)), etc., or should you use
> __traits(compiles, R.init.empty), or is it is(typeof((R r){r.empty;})),
> or any of the 15 or so slightly different ways of testing for the
> existence and type of some aggregate member, all subtly different from
> each other? Subtly different as in, for instance, testing for
> is(typeof((){R r; bool x = r.empty;})) is different from is(typeof(R
> r){bool x = r.empty;}), because the former doesn't work with R that has
> parameters closing over a local scope, whereas the latter does.
That is not a problem with constraints, it's a result of a dozen people adding
constraints in an uncoordinated manner. I.e. it's a library problem.
> Whereas if D had concepts, it would have been a simple
> matter of defining the prototypical range with struct-like syntax and
> calling it a day.
That really isn't good enough. Constraints can address behavior and
relationships, concepts do not.
More information about the Digitalmars-d-announce
mailing list