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 ]