[libcxx-commits] [PATCH] D121523: [libc++][ranges] Implement ranges::count{, _if}

Konstantin Varlamov via Phabricator via libcxx-commits libcxx-commits at lists.llvm.org
Mon Apr 4 12:45:35 PDT 2022

var-const accepted this revision.
var-const added inline comments.

Comment at: libcxx/test/std/algorithms/alg.nonmodifying/alg.count/ranges.count.pass.cpp:245
+      int a[] = {5, 5, 4, 3, 2, 1};
+      std::same_as<signed char> auto ret = std::ranges::count(DiffTypeIterator(a), DiffTypeIterator(a + 6), 4);
+      assert(ret == 1);
philnik wrote:
> var-const wrote:
> > Nit: `s/auto/decltype(auto)/` (here and below).
> I think we should stick with `auto` and only use `decltype(auto)` if we want to check that a reference is returned.
I think that
std::same_as<Foo> auto x = Bar();
static_assert(std::same_as<decltype(Bar()), Foo>);
should be exactly equivalent as far as checking the return type is concerned. If `Bar()` were to return `const Foo&`, the second check would catch that but not the first. Yes, it is highly unlikely that `count` could return a reference; however, I think it's easier to use an approach that is always guaranteed to work rather than deciding on a case-by-case basis.

  rG LLVM Github Monorepo



More information about the libcxx-commits mailing list