Я получаю эту ошибку: Error: mismatched function return type inference of
, когда возвращаю различные типы InputRanges из одной и той же функции. Тип, возвращаемый take
или takeExactly
, по какой-то причине совместим с исходным диапазоном ввода, но не совместим с моим пользовательским диапазоном ввода.Функция возвращаемого типа явление несоответствия при возврате разных диапазонов ввода
auto decode(Range)(Range r) {
if (r.front == 0) {
r.popFront();
return r;
} else if (r.front == 1) {
r.popFront();
return r.take(3); // this is compatible with the return type above
} else if (r.front == 2) {
r.popFront();
return MyRange(r); // this is not compatible with the types above
}
}
Что происходит?
Есть ли у 'MyRange' разрезы (' opSlice')? – sigod
Да, у него есть нарезка. – Tamas
Так что практически это ответ: r и r.take (3) имеет тот же тип, если разрезание диапазона поддерживается, и оно отличается от MyRange (r). Благодаря!! – Tamas