Hello,
my svn and compiler versions are:
Path: .
URL: http://svn.boost.org/svn/boost/trunk
Repository Root: http://svn.boost.org/svn/boost
Repository UUID: b8fc166d-592f-0410-95f2-cb63ce0dd405
Revision: 83985
Node Kind: directory
Schedule: normal
Last Changed Author: viboes
Last Changed Rev: 83985
Last Changed Date: 2013-04-20 16:12:43 +0200 (Sat, 20 Apr 2013)
$ LANG=en g++ --version
g++ (GCC) 4.6.3 20120306 (Red Hat 4.6.3-2)
Copyright (C) 2011 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
and maybe the last changes
$ svn log boost/thread/pthread/once_atomic.hpp
------------------------------------------------------------------------
r83466 | viboes | 2013-03-16 16:36:21 +0100 (Sa, 16. Mär 2013) | 1 Zeile
Thread: add invoke when no variadic templates are available; adapt
call_once.
breaks my code now which is basically:
---8<---
namespace {
struct id_string
{
static boost::once_flag flag;
typedef std::map map_type;
...
static void do_init(token_id_string& self)
{
insert(self.m_map)(x, "y")(...)
;
}
std::string const& operator()(id::type id) const
{
boost::call_once(flag, &id_string::do_init, *this);
map_iterator s = m_map.find(id);
...
}
};
id_string::map_type id_string::m_map;
#ifdef BOOST_THREAD_PROVIDES_ONCE_CXX11
boost::once_flag id_string::flag;
#else
boost::once_flag id_string::flag = BOOST_ONCE_INIT;
#endif
}
--->8---
The error is about
/usr/local/include/boost/thread/detail/invoke.hpp: In function 'typename
boost::enable_if_c<(! boost::is_member_function_pointer<Fp>::value),
Ret>::type boost::detail::invoke(Fp&&, Args&& ...) [with Ret = void, Fp
= void (*)({anonymous}::id_string&), Args = {{anonymous}::id_string},
typename boost::enable_if_c<(!
boost::is_member_function_pointer<Fp>::value), Ret>::type = void]':
/usr/local/include/boost/thread/pthread/once_atomic.hpp:127:9:
instantiated from 'void boost::call_once(boost::once_flag&, Function&&,
ArgTypes&& ...) [with Function = void (*)({anonymous}::id_string&),
ArgTypes = {{anonymous}::id_string&}]'
/home/olaf/work/token_ids.cpp:93:59: instantiated from here
/usr/local/include/boost/thread/detail/invoke.hpp:406:65: error: invalid
initialization of non-const reference of type '{anonymous}::id_string&'
from an rvalue of type '{anonymous}::id_string'
Is this intentionally or do I miss something?
Thanks,
Olaf