Да, это должно быть (формальное определение находится в шаблоне isInputRange
в документации, см .: http://dpldocs.info/experimental-docs/std.range.primitives.isInputRange.html).
На практике это может работать в любом случае, но поскольку в документах это сказано, а typeof(range.front)
- это обычная проверка ограничений диапазона, и это единственное, что @property
действительно изменится в реализации dmd прямо сейчас, то лучше всего использовать его, чтобы соответствовать.
Теперь, @property
в настоящее время не запрещает называть его как range.front()
, с круглыми скобками, вы НЕ должны этого делать, поскольку в какой-то момент в будущем @property может измениться, чтобы заблокировать это поведение.
Так что да, используйте @property
на range.front и всегда используйте его как свойство для максимальной прямой совместимости.