我正在阅读
ranges::distance
来源,但不明白:
struct __distance_fn
是决赛?void operator&() const = delete
的目的是什么(来源)我知道最终类没有派生类,一元
&
是获取对象的指针(或类似的东西)。但我无法理解他们在这里真正做什么ranges::distance
。
ranges::advance/prev/next
的情况相同,而其他函子没有这样的细节,例如范围::开始.
ranges::begin
(和其他函子)没有final
或删除operator &
?ranges::next
被称为niebloid,为了模仿它们的特性并防止它们被错误地用作对象,libstdc++中的this commit为它们添加了final并删除了oeprator&
,这样就不可能从它们派生并记下他们的地址。