On Monday, 23 July 2012 at 19:57:42 UTC, Jacob Carlborg wrote:
constraint BidirectionalRange (Range) : ForwardRange!(Range)
{
    void popBack ();
    @property E back ();
    @property E front ();
}

 [snip]

I know that others have had similar ideas.

I remember this was discussed recently and Don Clugston suggested something like this:

if there is no match for:

    void foo(T)(T t) if( !conditionA!T ){}
    void foo(T)(T t) if( conditionA!T && conditionB!T ){}

the error will be:

template foo does not match any function template, constraints values are:
    conditionA: true
    conditionB: false

(note that `conditionA` is listed only once)

And given who Don is, I'm pretty sure he have an idea how to implement this.


Reply via email to