Я пытаюсь реализовать свой собственный диапазон в D, и у меня проблемы с его .front ()
.
Мне нужно, чтобы возвращаемое значение было по ref
.
Если я сделаю const
, то возвращаемый объект будет быть копией , что мне не нужно.
Если я не сделаю его const
, то я не смогу использовать .front
на const
копии моего диапазона вообще.
Как мне решить эту проблему?
struct MyRange(T)
{
T[] buf;
@property ref T front() { return this.buf[0]; } // No error, but not const
@property ref T front() const { return this.buf[0]; } // Errors
@property T front() const { return this.buf[0]; } // No error, but a copy
// Can't have all three
}