有关范围的问题::距离实现

问题描述 投票:0回答:1

我正在阅读

ranges::distance
来源,但不明白:

  • 为什么
    struct __distance_fn
    是决赛?
  • void operator&() const = delete
    的目的是什么(来源

我知道最终类没有派生类,一元

&
是获取对象的指针(或类似的东西)。但我无法理解他们在这里真正做什么
ranges::distance

ranges::advance/prev/next
的情况相同,而其他函子没有这样的细节,例如范围::开始.

  • 为什么
    ranges::begin
    (和其他函子)没有
    final
    或删除
    operator &
c++ gcc c++20 libstdc++ std-ranges
1个回答
0
投票

ranges::next
被称为niebloid,为了模仿它们的特性并防止它们被错误地用作对象,libstdc++中的this commit为它们添加了final并删除了
oeprator&
,这样就不可能从它们派生并记下他们的地址。

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.