[Bug libstdc++/100285] experimental/net/socket/socket_base.cc fails on arm-eabi (r12-137)
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100285 Jonathan Wakely changed: What|Removed |Added Target Milestone|13.3|12.4 --- Comment #19 from Jonathan Wakely --- Fixed for 12.4 now anyway.
[Bug libstdc++/100285] experimental/net/socket/socket_base.cc fails on arm-eabi (r12-137)
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100285 --- Comment #18 from GCC Commits --- The releases/gcc-12 branch has been updated by Jonathan Wakely : https://gcc.gnu.org/g:3494bc7b03997f96e84e84f6904917854466d5ea commit r12-10541-g3494bc7b03997f96e84e84f6904917854466d5ea Author: Jonathan Wakely Date: Fri Jun 9 12:15:21 2023 +0100 libstdc++: Add preprocessor checks to [PR100285] We can't define endpoints and resolvers without the relevant OS support. If IPPROTO_TCP and IPPROTO_UDP are both undefined then we won't need basic_endpoint and basic_resolver anyway, so make them depend on those macros. libstdc++-v3/ChangeLog: PR libstdc++/100285 * include/experimental/internet [IPPROTO_TCP || IPPROTO_UDP] (basic_endpoint, basic_resolver_entry, resolver_base) (basic_resolver_results, basic_resolver): Only define if the tcp or udp protocols will be defined. (cherry picked from commit 793ed718b522b15e2d758eca953feeec1979fe2c)
[Bug libstdc++/100285] experimental/net/socket/socket_base.cc fails on arm-eabi (r12-137)
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100285 Jonathan Wakely changed: What|Removed |Added Status|NEW |RESOLVED Target Milestone|--- |13.3 Resolution|--- |FIXED --- Comment #17 from Jonathan Wakely --- Fixed for 13.3 I doubt anybody is trying to use this code on arm-eabi with gcc-12 or gcc-11, so not important to backport.
[Bug libstdc++/100285] experimental/net/socket/socket_base.cc fails on arm-eabi (r12-137)
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100285 --- Comment #16 from CVS Commits --- The releases/gcc-13 branch has been updated by Jonathan Wakely : https://gcc.gnu.org/g:132015b9c6c9f9156ff31f7d66ba92cf01d0bc90 commit r13-7508-g132015b9c6c9f9156ff31f7d66ba92cf01d0bc90 Author: Jonathan Wakely Date: Fri Jun 9 12:15:21 2023 +0100 libstdc++: Add preprocessor checks to [PR100285] We can't define endpoints and resolvers without the relevant OS support. If IPPROTO_TCP and IPPROTO_UDP are both undefined then we won't need basic_endpoint and basic_resolver anyway, so make them depend on those macros. libstdc++-v3/ChangeLog: PR libstdc++/100285 * include/experimental/internet [IPPROTO_TCP || IPPROTO_UDP] (basic_endpoint, basic_resolver_entry, resolver_base) (basic_resolver_results, basic_resolver): Only define if the tcp or udp protocols will be defined. (cherry picked from commit 793ed718b522b15e2d758eca953feeec1979fe2c)
[Bug libstdc++/100285] experimental/net/socket/socket_base.cc fails on arm-eabi (r12-137)
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100285 --- Comment #15 from Jonathan Wakely --- (In reply to Jonathan Wakely from comment #12) > This is failing for aarch64-none-elf: > > FAIL: experimental/net/headers.cc (test for excess errors) I hope this one is fixed on trunk now.
[Bug libstdc++/100285] experimental/net/socket/socket_base.cc fails on arm-eabi (r12-137)
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100285 --- Comment #14 from CVS Commits --- The master branch has been updated by Jonathan Wakely : https://gcc.gnu.org/g:793ed718b522b15e2d758eca953feeec1979fe2c commit r14-1650-g793ed718b522b15e2d758eca953feeec1979fe2c Author: Jonathan Wakely Date: Fri Jun 9 12:15:21 2023 +0100 libstdc++: Add preprocessor checks to [PR100285] We can't define endpoints and resolvers without the relevant OS support. If IPPROTO_TCP and IPPROTO_UDP are both udnefined then we won't need basic_endpoint and basic_resovler anyway, so make them depend on those macros. libstdc++-v3/ChangeLog: PR libstdc++/100285 * include/experimental/internet [IPPROTO_TCP || IPPROTO_UDP] (basic_endpoint, basic_resolver_entry, resolver_base) (basic_resolver_results, basic_resolver): Only define if the tcp or udp protocols will be defined.
[Bug libstdc++/100285] experimental/net/socket/socket_base.cc fails on arm-eabi (r12-137)
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100285 --- Comment #13 from Christophe Lyon --- Sure, here is what I have in libstdc++.log: In file included from /aci-gcc-fsf/builds/gcc-fsf-gccsrc/obj-aarch64-none-elf/gcc3/aarch64-none-elf/libstdc++-v3/include/experimental/net:42, from /libstdc++-v3/testsuite/experimental/net/headers.cc:20: /aci-gcc-fsf/builds/gcc-fsf-gccsrc/obj-aarch64-none-elf/gcc3/aarch64-none-elf/libstdc++-v3/include/experimental/internet:1575: error: 'sockaddr_in' does not name a type /aci-gcc-fsf/builds/gcc-fsf-gccsrc/obj-aarch64-none-elf/gcc3/aarch64-none-elf/libstdc++-v3/include/experimental/internet:1576: error: 'sockaddr_in6' does not name a type /aci-gcc-fsf/builds/gcc-fsf-gccsrc/obj-aarch64-none-elf/gcc3/aarch64-none-elf/libstdc++-v3/include/experimental/internet: In member function 'constexpr std::size_t std::experimental::net::v1::ip::basic_endpoint<_InternetProtocol>::size() const': /aci-gcc-fsf/builds/gcc-fsf-gccsrc/obj-aarch64-none-elf/gcc3/aarch64-none-elf/libstdc++-v3/include/experimental/internet:1561: error: 'sockaddr_in6' was not declared in this scope /aci-gcc-fsf/builds/gcc-fsf-gccsrc/obj-aarch64-none-elf/gcc3/aarch64-none-elf/libstdc++-v3/include/experimental/internet:1561: error: 'sockaddr_in' was not declared in this scope /aci-gcc-fsf/builds/gcc-fsf-gccsrc/obj-aarch64-none-elf/gcc3/aarch64-none-elf/libstdc++-v3/include/experimental/internet: In member function 'constexpr bool std::experimental::net::v1::ip::basic_endpoint<_InternetProtocol>::_M_is_v6() const': /aci-gcc-fsf/builds/gcc-fsf-gccsrc/obj-aarch64-none-elf/gcc3/aarch64-none-elf/libstdc++-v3/include/experimental/internet:1580: error: 'AF_INET6' was not declared in this scope /aci-gcc-fsf/builds/gcc-fsf-gccsrc/obj-aarch64-none-elf/gcc3/aarch64-none-elf/libstdc++-v3/include/experimental/internet: At global scope: /aci-gcc-fsf/builds/gcc-fsf-gccsrc/obj-aarch64-none-elf/gcc3/aarch64-none-elf/libstdc++-v3/include/experimental/internet:1710: error: 'AI_PASSIVE' was not declared in this scope /aci-gcc-fsf/builds/gcc-fsf-gccsrc/obj-aarch64-none-elf/gcc3/aarch64-none-elf/libstdc++-v3/include/experimental/internet:1711: error: 'AI_CANONNAME' was not declared in this scope /aci-gcc-fsf/builds/gcc-fsf-gccsrc/obj-aarch64-none-elf/gcc3/aarch64-none-elf/libstdc++-v3/include/experimental/internet:1712: error: 'AI_NUMERICHOST' was not declared in this scope compiler exited with status 1 FAIL: experimental/net/headers.cc (test for excess errors) Excess errors: /aci-gcc-fsf/builds/gcc-fsf-gccsrc/obj-aarch64-none-elf/gcc3/aarch64-none-elf/libstdc++-v3/include/experimental/internet:1575: error: 'sockaddr_in' does not name a type /aci-gcc-fsf/builds/gcc-fsf-gccsrc/obj-aarch64-none-elf/gcc3/aarch64-none-elf/libstdc++-v3/include/experimental/internet:1576: error: 'sockaddr_in6' does not name a type /aci-gcc-fsf/builds/gcc-fsf-gccsrc/obj-aarch64-none-elf/gcc3/aarch64-none-elf/libstdc++-v3/include/experimental/internet:1561: error: 'sockaddr_in6' was not declared in this scope /aci-gcc-fsf/builds/gcc-fsf-gccsrc/obj-aarch64-none-elf/gcc3/aarch64-none-elf/libstdc++-v3/include/experimental/internet:1561: error: 'sockaddr_in' was not declared in this scope /aci-gcc-fsf/builds/gcc-fsf-gccsrc/obj-aarch64-none-elf/gcc3/aarch64-none-elf/libstdc++-v3/include/experimental/internet:1580: error: 'AF_INET6' was not declared in this scope /aci-gcc-fsf/builds/gcc-fsf-gccsrc/obj-aarch64-none-elf/gcc3/aarch64-none-elf/libstdc++-v3/include/experimental/internet:1710: error: 'AI_PASSIVE' was not declared in this scope /aci-gcc-fsf/builds/gcc-fsf-gccsrc/obj-aarch64-none-elf/gcc3/aarch64-none-elf/libstdc++-v3/include/experimental/internet:1711: error: 'AI_CANONNAME' was not declared in this scope /aci-gcc-fsf/builds/gcc-fsf-gccsrc/obj-aarch64-none-elf/gcc3/aarch64-none-elf/libstdc++-v3/include/experimental/internet:1712: error: 'AI_NUMERICHOST' was not declared in this s
[Bug libstdc++/100285] experimental/net/socket/socket_base.cc fails on arm-eabi (r12-137)
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100285 --- Comment #12 from Jonathan Wakely --- This is failing for aarch64-none-elf: FAIL: experimental/net/headers.cc (test for excess errors) Could you let me know what the error is please?
[Bug libstdc++/100285] experimental/net/socket/socket_base.cc fails on arm-eabi (r12-137)
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100285 --- Comment #11 from CVS Commits --- The releases/gcc-11 branch has been updated by Jonathan Wakely : https://gcc.gnu.org/g:b7e73951fd15f07946ff0c56f4e31b0006c621f9 commit r11-9141-gb7e73951fd15f07946ff0c56f4e31b0006c621f9 Author: Jonathan Wakely Date: Thu Aug 26 12:06:55 2021 +0100 libstdc++: Make Networking TS headers more portable [PR100285] Add more preprocessor conditions to check for constants being defined before using them, so that the Networking TS headers can be compiled on a wider range of platforms. Signed-off-by: Jonathan Wakely libstdc++-v3/ChangeLog: PR libstdc++/100285 * configure.ac: Check for O_NONBLOCK. * configure: Regenerate. * include/experimental/internet: Include for Windows. Use preprocessor conditions around more constants. * include/experimental/socket: Use preprocessor conditions around more constants. * testsuite/experimental/net/internet/resolver/base.cc: Only use constants when the corresponding C macro is defined. * testsuite/experimental/net/socket/basic_socket.cc: Likewise. * testsuite/experimental/net/socket/socket_base.cc: Likewise. Make preprocessor checks more fine-grained.
[Bug libstdc++/100285] experimental/net/socket/socket_base.cc fails on arm-eabi (r12-137)
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100285 --- Comment #10 from Jonathan Wakely --- It should look a bit better after r12-3158.
[Bug libstdc++/100285] experimental/net/socket/socket_base.cc fails on arm-eabi (r12-137)
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100285 --- Comment #9 from CVS Commits --- The master branch has been updated by Jonathan Wakely : https://gcc.gnu.org/g:cd67d138ec6006d650d1ba96c8a1322b285723cd commit r12-3158-gcd67d138ec6006d650d1ba96c8a1322b285723cd Author: Jonathan Wakely Date: Thu Aug 26 12:06:55 2021 +0100 libstdc++: Make Networking TS headers more portable [PR100285] Add more preprocessor conditions to check for constants being defined before using them, so that the Networking TS headers can be compiled on a wider range of platforms. Signed-off-by: Jonathan Wakely libstdc++-v3/ChangeLog: PR libstdc++/100285 * configure.ac: Check for O_NONBLOCK. * configure: Regenerate. * include/experimental/internet: Include for Windows. Use preprocessor conditions around more constants. * include/experimental/socket: Use preprocessor conditions around more constants. * testsuite/experimental/net/internet/resolver/base.cc: Only use constants when the corresponding C macro is defined. * testsuite/experimental/net/socket/basic_socket.cc: Likewise. * testsuite/experimental/net/socket/socket_base.cc: Likewise. Make preprocessor checks more fine-grained.
[Bug libstdc++/100285] experimental/net/socket/socket_base.cc fails on arm-eabi (r12-137)
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100285 --- Comment #8 from Christophe Lyon --- Sorry I am still seeing errors on trunk and gcc-11: FAIL: experimental/net/socket/socket_base.cc (test for excess errors) Excess errors: /aci-gcc-fsf/builds/gcc-fsf-gccsrc/obj-arm-none-eabi/gcc3/arm-none-eabi/thumb/v8-m.main/nofp/libstdc++-v3/include/experimental/socket:717: error: 'linger' is not a member of 'std::experimental::net::v1::socket_base' /aci-gcc-fsf/builds/gcc-fsf-gccsrc/obj-arm-none-eabi/gcc3/arm-none-eabi/thumb/v8-m.main/nofp/libstdc++-v3/include/experimental/socket:898: error: 'shutdown_type' has not been declared [...] FAIL: experimental/net/headers.cc (test for excess errors) Excess errors: /aci-gcc-fsf/builds/gcc-fsf-gccsrc/obj-arm-none-eabi/gcc3/arm-none-eabi/thumb/v8-m.main/nofp/libstdc++-v3/include/experimental/socket:717: error: 'linger' is not a member of 'std::experimental::net::v1::socket_base' /aci-gcc-fsf/builds/gcc-fsf-gccsrc/obj-arm-none-eabi/gcc3/arm-none-eabi/thumb/v8-m.main/nofp/libstdc++-v3/include/experimental/socket:898: error: 'shutdown_type' has not been declared [...] FAIL: experimental/net/socket/basic_socket.cc (test for excess errors) Excess errors: /aci-gcc-fsf/builds/gcc-fsf-gccsrc/obj-arm-none-eabi/gcc3/arm-none-eabi/thumb/v8-m.main/nofp/libstdc++-v3/include/experimental/socket:717: error: 'linger' is not a member of 'std::experimental::net::v1::socket_base' /aci-gcc-fsf/builds/gcc-fsf-gccsrc/obj-arm-none-eabi/gcc3/arm-none-eabi/thumb/v8-m.main/nofp/libstdc++-v3/include/experimental/socket:898: error: 'shutdown_type' has not been declared On some configs (low end CPU), I get in addition: FAIL: experimental/net/timer/waitable/cons.cc (test for excess errors) Excess errors: /aci-gcc-fsf/builds/gcc-fsf-gccsrc/tools/arm-none-eabi/bin/ld: /cc6v7KWK.o: in function `_ZNSt13__atomic_baseIjEmmEv': /aci-gcc-fsf/builds/gcc-fsf-gccsrc/obj-arm-none-eabi/gcc3/arm-none-eabi/thumb/v6-m/nofp/libstdc++-v3/include/bits/atomic_base.h:386: undefined reference to `__atomic_fetch_sub_4' collect2: error: ld returned 1 exit status FAIL: experimental/net/timer/waitable/dest.cc (test for excess errors) Excess errors: /aci-gcc-fsf/builds/gcc-fsf-gccsrc/tools/arm-none-eabi/bin/ld: /ccKgSt10.o: in function `_ZNSt13__atomic_baseIjEppEv': /aci-gcc-fsf/builds/gcc-fsf-gccsrc/obj-arm-none-eabi/gcc3/arm-none-eabi/thumb/v6-m/nofp/libstdc++-v3/include/bits/atomic_base.h:378: undefined reference to `__atomic_fetch_add_4' /aci-gcc-fsf/builds/gcc-fsf-gccsrc/tools/arm-none-eabi/bin/ld: /ccKgSt10.o: in function `_ZNSt13__atomic_baseIjEmmEv': /aci-gcc-fsf/builds/gcc-fsf-gccsrc/obj-arm-none-eabi/gcc3/arm-none-eabi/thumb/v6-m/nofp/libstdc++-v3/include/bits/atomic_base.h:386: undefined reference to `__atomic_fetch_sub_4' collect2: error: ld returned 1 exit status FAIL: experimental/net/timer/waitable/ops.cc (test for excess errors) Excess errors: /aci-gcc-fsf/builds/gcc-fsf-gccsrc/tools/arm-none-eabi/bin/ld: /cc5uZ7RA.o: in function `_ZNSt13__atomic_baseIjEppEv': /aci-gcc-fsf/builds/gcc-fsf-gccsrc/obj-arm-none-eabi/gcc3/arm-none-eabi/thumb/v6-m/nofp/libstdc++-v3/include/bits/atomic_base.h:378: undefined reference to `__atomic_fetch_add_4' /aci-gcc-fsf/builds/gcc-fsf-gccsrc/tools/arm-none-eabi/bin/ld: /cc5uZ7RA.o: in function `_ZNSt13__atomic_baseIjEmmEv': /aci-gcc-fsf/builds/gcc-fsf-gccsrc/obj-arm-none-eabi/gcc3/arm-none-eabi/thumb/v6-m/nofp/libstdc++-v3/include/bits/atomic_base.h:386: undefined reference to `__atomic_fetch_sub_4' collect2: error: ld returned 1 exit status but that's a different problem
[Bug libstdc++/100285] experimental/net/socket/socket_base.cc fails on arm-eabi (r12-137)
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100285 --- Comment #7 from CVS Commits --- The releases/gcc-11 branch has been updated by Jonathan Wakely : https://gcc.gnu.org/g:f9325e99bbc83f975ce423efaaaded73400b08e3 commit r11-8916-gf9325e99bbc83f975ce423efaaaded73400b08e3 Author: Jonathan Wakely Date: Fri Apr 30 14:25:25 2021 +0100 libstdc++: Use features conditionally [PR 100285] This makes the uses of getsockopt and setsockopt in conditional on the availability of . It also fixes a test to check for instead of . libstdc++-v3/ChangeLog: PR libstdc++/100285 * include/experimental/socket (__basic_socket_impl::set_option) (__basic_socket_impl::get_option) [!_GLIBCXX_HAVE_SYS_SOCKET_H]: Just set error code. * testsuite/experimental/net/socket/socket_base.cc: CHeck for not . (cherry picked from commit 0d501c338548152f9d2728d383eec3e9cef16784)
[Bug libstdc++/100285] experimental/net/socket/socket_base.cc fails on arm-eabi (r12-137)
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100285 --- Comment #6 from CVS Commits --- The releases/gcc-11 branch has been updated by Jonathan Wakely : https://gcc.gnu.org/g:fb7ca13de4b6d267960fb2c51092343a9e731f66 commit r11-8912-gfb7ca13de4b6d267960fb2c51092343a9e731f66 Author: Jonathan Wakely Date: Tue Apr 27 11:07:47 2021 +0100 libstdc++: Define net::socket_base::message_flags operators as friends [PR 100285] The overloaded operators for socket_base::message_flags should only be defined when the message_flags type itself is defined. Rather than duplicate the preprocessor conditional, this moves the operators into the same scope as the type, defining them as hidden friends. As well as fixing the bug, this has all the usual advantages of hidden friends (they are not visible to normal name lookup for unrelated types). For consistency, do the same for the resolver_base::flags bitmask operators too. libstdc++-v3/ChangeLog: PR libstdc++/100285 * include/experimental/internet (resolver_base::flags): Define overloaded operators as hidden friends. * include/experimental/socket (socket_base::message_flags): Likewise. (cherry picked from commit 8aadb4fedb17e7a44583a7a5a4e96b1874e1ce98)
[Bug libstdc++/100285] experimental/net/socket/socket_base.cc fails on arm-eabi (r12-137)
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100285 --- Comment #5 from Jonathan Wakely --- Could you let me know the remaining errors for the experimental/net/* tests please? (No rush, whenever it's convenient)
[Bug libstdc++/100285] experimental/net/socket/socket_base.cc fails on arm-eabi (r12-137)
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100285 --- Comment #4 from CVS Commits --- The master branch has been updated by Jonathan Wakely : https://gcc.gnu.org/g:0d501c338548152f9d2728d383eec3e9cef16784 commit r12-318-g0d501c338548152f9d2728d383eec3e9cef16784 Author: Jonathan Wakely Date: Fri Apr 30 14:25:25 2021 +0100 libstdc++: Use features conditionally [PR 100285] This makes the uses of getsockopt and setsockopt in conditional on the availability of . It also fixes a test to check for instead of . libstdc++-v3/ChangeLog: PR libstdc++/100285 * include/experimental/socket (__basic_socket_impl::set_option) (__basic_socket_impl::get_option) [!_GLIBCXX_HAVE_SYS_SOCKET_H]: Just set error code. * testsuite/experimental/net/socket/socket_base.cc: CHeck for not .
[Bug libstdc++/100285] experimental/net/socket/socket_base.cc fails on arm-eabi (r12-137)
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100285 Christophe Lyon changed: What|Removed |Added Ever confirmed|0 |1 Last reconfirmed||2021-04-30 Status|UNCONFIRMED |NEW --- Comment #3 from Christophe Lyon --- Not quite, I'm now seeing: In file included from /libstdc++-v3/testsuite/experimental/net/socket/socket_base.cc:20: /aci-gcc-fsf/builds/gcc-fsf-gccsrc/obj-arm-none-eabi/gcc3/arm-none-eabi/libstdc++-v3/include/experimental/socket: In member function 'void std::experimental::net::v1::__basic_socket_impl<_Protocol>::set_option(const _SettableSocketOption&, std::error_code&)': /aci-gcc-fsf/builds/gcc-fsf-gccsrc/obj-arm-none-eabi/gcc3/arm-none-eabi/libstdc++-v3/include/experimental/socket:625: error: '::setsockopt' has not been declared /aci-gcc-fsf/builds/gcc-fsf-gccsrc/obj-arm-none-eabi/gcc3/arm-none-eabi/libstdc++-v3/include/experimental/socket: In member function 'void std::experimental::net::v1::__basic_socket_impl<_Protocol>::get_option(_GettableSocketOption&, std::error_code&) const': /aci-gcc-fsf/builds/gcc-fsf-gccsrc/obj-arm-none-eabi/gcc3/arm-none-eabi/libstdc++-v3/include/experimental/socket:639: error: '::getsockopt' has not been declared; did you mean 'getsubopt'? /aci-gcc-fsf/builds/gcc-fsf-gccsrc/obj-arm-none-eabi/gcc3/arm-none-eabi/libstdc++-v3/include/experimental/socket: In member function 'void std::experimental::net::v1::__basic_socket_impl<_Protocol>::_M_close()': /aci-gcc-fsf/builds/gcc-fsf-gccsrc/obj-arm-none-eabi/gcc3/arm-none-eabi/libstdc++-v3/include/experimental/socket:709: error: 'linger' is not a member of 'std::experimental::net::v1::socket_base' []
[Bug libstdc++/100285] experimental/net/socket/socket_base.cc fails on arm-eabi (r12-137)
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100285 --- Comment #2 from Jonathan Wakely --- This should be fixed on trunk now.
[Bug libstdc++/100285] experimental/net/socket/socket_base.cc fails on arm-eabi (r12-137)
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100285 --- Comment #1 from CVS Commits --- The master branch has been updated by Jonathan Wakely : https://gcc.gnu.org/g:8aadb4fedb17e7a44583a7a5a4e96b1874e1ce98 commit r12-152-g8aadb4fedb17e7a44583a7a5a4e96b1874e1ce98 Author: Jonathan Wakely Date: Tue Apr 27 11:07:47 2021 +0100 libstdc++: Define net::socket_base::message_flags operators as friends [PR 100285] The overloaded operators for socket_base::message_flags should only be defined when the message_flags type itself is defined. Rather than duplicate the preprocessor conditional, this moves the operators into the same scope as the type, defining them as hidden friends. As well as fixing the bug, this has all the usual advantages of hidden friends (they are not visible to normal name lookup for unrelated types). For consistency, do the same for the resolver_base::flags bitmask operators too. libstdc++-v3/ChangeLog: PR libstdc++/100285 * include/experimental/internet (resolver_base::flags): Define overloaded operators as hidden friends. * include/experimental/socket (socket_base::message_flags): Likewise.
