On Tuesday, 12 March 2013 at 15:37:01 UTC, deadalnix wrote:
On Tuesday, 12 March 2013 at 15:26:19 UTC, TommiT wrote:
With the thing defined that way not that much. But consider :

concept InputRange(T) {
  bool empty;
  T front;
  void popFront();
}

What if I write a type like the following:

struct MyType {
   int _value;

   @property bool empty() const { return true; }
   @property ref const(int) front() const { return _value; }
   void popFront() const { }
}

Does MyType fulfill the requirements of your InputRange(T) concept? I don't think it does since its front returns by ref const(int) and InputRange(T)'s front returns by value.

It doesn't because popFront is const and that don't make any sense.

I didn't mean to make popFront const. My point was that InputRange concept requires that the front property returns a non-void type but it doesn't care whether or not it is returned by ref, const ref, or by value. I don't see how you could easily convey that kind of requirement in an interface-like syntax.

Reply via email to