Section: 3.3.1 [fund.ts::meta.type.synop] Status: TS Submitter: Joe Gottman Opened: 2014-03-07 Last modified: 2017-07-30
Priority: 0
View all issues with TS status.
Discussion:
Addresses: fund.ts
The library fundamentals specification defines two new type trait template classes: invocation_type and raw_invocation_type.
But it does not define the corresponding template aliases. Note that both of these classes define a member typedef type and no
other public members, so according to the argument in N3887
the template aliases should be defined.
[2013-06-21 Rapperswil]
Accept for Library Fundamentals TS Working Paper
Proposed resolution:
This wording is relative to N3908.
Add the following to section 3.3.1[meta.type.synop] of the Library Fundamentals specification as indicated:
namespace std {
namespace experimental {
inline namespace fundamentals_v1 {
[…]
// 3.3.2, Other type transformations
template <class> class invocation_type; // not defined
template <class F, class... ArgTypes> class invocation_type<F(ArgTypes...)>;
template <class> class raw_invocation_type; // not defined
template <class F, class... ArgTypes> class raw_invocation_type<F(ArgTypes...)>;
template <class T>
using invocation_type_t = typename invocation_type<T>::type;
template <class T>
using raw_invocation_type_t = typename raw_invocation_type<T>::type;
} // namespace fundamentals_v1
} // namespace experimental
} // namespace std