This page is a snapshot from the LWG issues list, see the Library Active Issues List for more information and the meaning of Resolved status.
is_callable
is not a good nameSection: 21.3.3 [meta.type.synop], 21.3.7 [meta.rel] Status: Resolved Submitter: United States Opened: 2017-02-03 Last modified: 2020-09-06
Priority: Not Prioritized
View other active issues in [meta.type.synop].
View all other issues in [meta.type.synop].
View all issues with Resolved status.
Discussion:
Addresses US 86is_callable
is not a good name because it implies F(A...)
instead of INVOKE(F, A...)
Proposed change: Rename is_callable
to is_invocable
and rename is_nothrow_callable
to
is_nothrow_invocable
.
[2017-02-22, Daniel comments and provides concrete wording]
I'm strongly in favour for this change to possibly allow for a future "pure" is_callable
trait that solely
describes function call-like expressions.
Previous resolution [SUPERSEDED]:
This wording is relative to N4640.
Modify 21.3.3 [meta.type.synop], header
<type_traits>
synopsis, as indicated:[…] // 20.15.6, type relations […] template <class, class R = void> struct is_invocablecallable; // not defined template <class Fn, class... ArgTypes, class R> struct is_invocablecallable<Fn(ArgTypes...), R>; template <class, class R = void> struct is_nothrow_invocablecallable; // not defined template <class Fn, class... ArgTypes, class R> struct is_nothrow_invocablecallable<Fn(ArgTypes...), R>; […] // 20.15.6, type relations […] template <class T, class R = void> constexpr bool is_invocablecallable_v = is_invocablecallable<T, R>::value; template <class T, class R = void> constexpr bool is_nothrow_invocablecallable_v = is_nothrow_invocablecallable<T, R>::value; […]Modify 21.3.7 [meta.rel], Table 44 — "Type relationship predicates", as indicated:
Table 44 — Type relationship predicates […]
template <class Fn, class...
ArgTypes, class R>
struct is_invocablecallable<
Fn(ArgTypes...), R>;[…] […] template <class Fn, class...
ArgTypes, class R>
struct is_nothrow_invocablecallable<
Fn(ArgTypes...), R>;is_invocable
iscallable_v<
Fn(ArgTypes...), R>
true
[…][…]
[2017-02-24, Daniel comments]
I suggest to apply the paper d0604r0 instead, available on the Kona LWG wiki.
[2017-03-12, post-Kona]
Resolved by p0604r0.
Proposed resolution: