对于 D 范围,front() 应该是 @属性 吗?

For a D range, should front() be a @property?

当我定义我的 D 范围时,front() 应该是 @属性 吗? (或者只是一个 "regular" 成员函数?)

是的,应该是(正式定义在文档中的 isInputRange 模板下,参见:http://dpldocs.info/experimental-docs/std.range.primitives.isInputRange.html)。

在实践中,无论如何它都可以工作,但由于文档说 typeof(range.front) 是范围约束中的常见检查,这是 @property 在 dmd 实现中实际改变的一件事现在,最好使用它来兼容。

现在,@property 目前不禁止像 range.front() 那样调用它,带括号,你不应该那样做,因为在将来的某个时候,@属性 可能会改变阻止这种行为。

所以是的,在 range.front 上使用 @property 并始终将其用作 属性 以获得最大的向前兼容性。