http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50982
--- Comment #36 from Jonathan Wakely <redi at gcc dot gnu.org> 2011-11-05 16:09:42 UTC --- (In reply to comment #31) > Adding the braces removes the first error, but > > In file included from /farm/dje/src/src/libstdc++-v3/src/atomic.cc:28:0: > /tmp/20111104/powerpc-ibm-aix5.3.0.0/pthread/libstdc++-v3/include/mutex: In > function 'void std::call_once(std::once_flag&, _Callable&&, _Args&& ...)': > /tmp/20111104/powerpc-ibm-aix5.3.0.0/pthread/libstdc++-v3/include/mutex:818:64: > error: invalid conversion from 'void (*)(...)' to 'void (*)()' [-fpermissive] > > remains. I can't reproduce that error. Does this patch make any difference? Index: include/std/mutex =================================================================== --- include/std/mutex (revision 181013) +++ 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> It really *shouldn't* make a difference, but it's all I can think of.