This is necessary for systems that treat all system headers as
implicitly extern "C" (at least AIX and OpenBSD) because otherwise the
empty parameter list is treated as declaring void __once_proxy(...)
This has come up recently because we are now enabling <mutex> etc. on
additional platforms.
PR libstdc++/50982
* include/std/mutex (__once_proxy): Use void parameter list to
work on implicit extern "C" systems.
Tested x86_64-linux and with reports of this solving bootstrap
failures on AIX and OpenBSD, committed to trunk.
Index: include/std/mutex
===================================================================
--- include/std/mutex (revision 181054)
+++ include/std/mutex (working copy)
@@ -796,7 +796,7 @@
__get_once_mutex();
#endif
- extern "C" void __once_proxy();
+ extern "C" void __once_proxy(void);
/// call_once
template<typename _Callable, typename... _Args>