[libcxx-commits] [PATCH] D99044: [libc++] Split out `<__functional_{ops, search}>` from `<functional>`. NFCI

Arthur O'Dwyer via Phabricator via libcxx-commits libcxx-commits at lists.llvm.org
Thu Apr 1 08:55:46 PDT 2021


Quuxplusone updated this revision to Diff 334718.
Quuxplusone added a comment.

Unfortunately we can't use `__invoke` in `bind_front` and `not_fn`
without major surgery, because that causes some kind of problem
with their `noexcept` clauses. I think using `is_nothrow_invocable<...>`
is somehow strictly SFINAE-safer than using `noexcept(invoke(...))`.

But we can't use `is_nothrow_invocable` for `not_fn`, because what we care about there is that neither `invoke` **nor** `operator!` throw exceptions.

And we can't use `is_nothrow_invocable` for `bind_front` without further surgery, because apparently `is_nothrow_invocable<Args...>` is ill-formed! Clang wants us to pass parameter-pack expansions //only// to template parameters that themselves are packs, and `is_nothrow_invocable<Fn, Args...>` wants a non-pack as its first template parameter. Either this is really awful of C++, or I've misdiagnosed the problem.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D99044/new/

https://reviews.llvm.org/D99044

Files:
  libcxx/include/CMakeLists.txt
  libcxx/include/__functional_base
  libcxx/include/__functional_ops
  libcxx/include/__functional_search
  libcxx/include/algorithm
  libcxx/include/concepts
  libcxx/include/experimental/coroutine
  libcxx/include/experimental/propagate_const
  libcxx/include/experimental/simd
  libcxx/include/ext/hash_map
  libcxx/include/ext/hash_set
  libcxx/include/functional
  libcxx/include/map
  libcxx/include/memory
  libcxx/include/module.modulemap
  libcxx/include/mutex
  libcxx/include/numeric
  libcxx/include/optional
  libcxx/include/queue
  libcxx/include/set
  libcxx/include/thread
  libcxx/include/unordered_map
  libcxx/include/unordered_set
  libcxx/include/valarray
  libcxx/include/variant

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D99044.334718.patch
Type: text/x-patch
Size: 51189 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/libcxx-commits/attachments/20210401/0d92e7ec/attachment-0001.bin>


More information about the libcxx-commits mailing list