// { dg-do run { target c++14 } } // { dg-require-effective-target net_ts_ip } // { dg-add-options net_ts } #include #include #include using namespace std::experimental::net; void test_extensible() { #if __cplusplus >= 202002L static_assert(ip::tcp::endpoint().capacity() == sizeof(sockaddr_in6), "ip::tcp::endpoint::capacity() can store a sockaddr_in6"); #else VERIFY( ip::tcp::endpoint().capacity() == sizeof(sockaddr_in6) ); #endif ip::tcp::endpoint t1(ip::tcp::v4(), 22); VERIFY(t1.size() == sizeof(sockaddr_in)); t1.resize(sizeof(sockaddr_in)); try { t1.resize(2 * sizeof(sockaddr_in)); VERIFY(false); } catch (const std::length_error&) { } ip::tcp::endpoint t2(ip::tcp::v6(), 80); VERIFY(t2.size() == sizeof(sockaddr_in6)); t2.resize(sizeof(sockaddr_in6)); try { t2.resize(2 * sizeof(sockaddr_in6)); VERIFY(false); } catch (const std::length_error&) { } ip::tcp::endpoint t3; std::memcpy(t3.data(), t1.data(), t1.size()); t3.resize(t1.size()); VERIFY( t3 == t1 ); std::memcpy(t3.data(), t2.data(), t2.size()); t3.resize(t2.size()); VERIFY( t3 == t2 ); } int main() { test_extensible(); }