Проблема с константой / ссылкой в ​​D

Я пытаюсь реализовать свой собственный диапазон в 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
}
7
задан Mehrdad 7 August 2011 в 21:58
поделиться