Document number | P0423R0 |
Date | 2016-08-04 |
Project | Programming Language C++, Library Working Group |
Reply-to | Jonathan Wakely <cxx@kayari.org> |
The Networking TS defines type traits such as is_executor
but does not provide
corresponding variable templates such as is_executor_v
. The direction set
by C++17 is to provide these, so the TS should define them.
Add to 13.1 [async.synop] synopsis:
template<class T> struct is_executor;
template<class T>
constexpr bool is_executor_v = is_executor<T>::value;
struct executor_arg_t { };
constexpr executor_arg_t executor_arg = executor_arg_t();
template<class T, class Executor> struct uses_executor;
template<class T, class Executor>
constexpr bool uses_executor_v = uses_executor<T, Executor>::value;
template<class T, class Executor = system_executor>
struct associated_executor;
Add to 16.1 [buffer.synop] synopsis:
// buffer type traits:
template<class T> is_mutable_buffer_sequence;
template<class T> is_const_buffer_sequence;
template<class T> is_dynamic_buffer;
template<class T>
constexpr bool is_mutable_buffer_sequence_v = is_mutable_buffer_sequence<T>::value;
template<class T>
constexpr bool is_const_buffer_sequence_v = is_const_buffer_sequence<T>::value;
template<class T>
constexpr bool is_dynamic_buffer_v = is_dynamic_buffer<T>::value;
// buffer sequence access: