Функции диапазонов, не являющиеся членами

У меня есть класс, для которого я реализую диапазоны. Я хотел бы реализовать функции так, как это делает библиотека phobos, то есть вне основного класса.

void popBack(T)(ref T[] a) if (!is(Unqual!T == char) && !is(Unqual!T == wchar))
{
    assert(a.length);
    a = a[0 .. $ - 1];
}

Вот моя версия:

void popFront(T)(ref PersistentList!(T) a)
{
    a = a.next();   
}

Когда я пытаюсь скомпилировать этот код с помощью forech, я получаю:

Error   1   Error: no property 'popFront' for type 'stmd.PersistentList!(int).PersistentList'   main.d  

Я мог бы переместить код члена в основной класс , но поскольку я изменяю входное значение "ref", я не могу использовать popFront (), мне действительно нужен popFront (ref a).

Что я делаю не так?

5
задан Timothy Baldridge 5 October 2010 в 23:25
поделиться