namespace std {
namespace experimental {
namespace net {
inline namespace v1 {
class execution_context;
template<class T, class Executor>
class executor_binder;
template<class Executor>
class executor_work_guard;
class system_executor;
class executor;
template<class Executor>
class strand;
class io_context;
template<class Clock> struct wait_traits;
template<class Clock, class WaitTraits = wait_traits<Clock>>
class basic_waitable_timer;
using system_timer = basic_waitable_timer<chrono::system_clock>;
using steady_timer = basic_waitable_timer<chrono::steady_clock>;
using high_resolution_timer = basic_waitable_timer<chrono::high_resolution_clock>;
template<class Protocol>
class basic_socket;
template<class Protocol>
class basic_datagram_socket;
template<class Protocol>
class basic_stream_socket;
template<class Protocol>
class basic_socket_acceptor;
template<class Protocol, class Clock = chrono::steady_clock,
class WaitTraits = wait_traits<Clock>>
class basic_socket_streambuf;
template<class Protocol, class Clock = chrono::steady_clock,
class WaitTraits = wait_traits<Clock>>
class basic_socket_iostream;
namespace ip {
class address;
class address_v4;
class address_v6;
template<class Address>
class basic_address_iterator;
using address_v4_iterator = basic_address_iterator<address_v4>;
using address_v6_iterator = basic_address_iterator<address_v6>;
template<class Address>
class basic_address_range;
using address_v4_range = basic_address_range<address_v4>;
using address_v6_range = basic_address_range<address_v6>;
class network_v4;
class network_v6;
template<class InternetProtocol>
class basic_endpoint;
template<class InternetProtocol>
class basic_resolver_entry;
template<class InternetProtocol>
class basic_resolver_results;
template<class InternetProtocol>
class basic_resolver;
class tcp;
class udp;
} // namespace ip
} // inline namespace v1
} // namespace net
} // namespace experimental
} // namespace std
Default template arguments are described as appearing both in <netfwd> and in the synopsis of other headers but it is well-formed to include both <netfwd> and one or more of the other headers. [ Note: It is the implementation's responsibility to implement headers so that including <netfwd> and other headers does not violate the rules about multiple occurrences of default arguments. — end note ]