[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