[libcxx-commits] [PATCH] D96235: [libcxx] adds concepts `std::invocable` and `std::regular_invocable`
Casey Carter via Phabricator via libcxx-commits
libcxx-commits at lists.llvm.org
Tue Feb 9 16:32:30 PST 2021
CaseyCarter added inline comments.
================
Comment at: libcxx/include/concepts:184
+concept invocable = requires(_Fn&& __fn, _Args&&... __args) {
+ _VSTD::invoke(std::forward<_Fn>(__fn), std::forward<_Args>(__args)...); // not required to be equality preserving
+};
----------------
ldionne wrote:
> The Standard seems to say that we should call `invoke` unqualified: http://eel.is/c++draft/concept.invocable#concept:invocable.
>
> This seems a bit weird to me - I assume I'm missing some context or mis-reading the paragraph prior to the concept definition?
I suspect you're forgetting http://eel.is/c++draft/contents#3 "`meow` really means `::std::meow`". Please don't ask me why the Standard always says `std::move` / `std::forward` or my head will explode.
Source comment: there's a weird mixture of `_VSTD::` and `std::` here - is that intended? (I have a vague notion that `std::` is used only for exceptions that are stable across ABIs or something?)
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D96235/new/
https://reviews.llvm.org/D96235
More information about the libcxx-commits
mailing list