[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