
Michael Glassford wrote:
Janusz Piwowarski wrote:
[...] After latest cvs update, i've got errors like:
gcc-C++-action
bin\boost\libs\thread\build\boost_thread.dll\mingw\debug\threading-multi\con
dition.obj In file included from d:/sources/boost/libs/thread/src/condition.cpp:18: d:/sources/boost/libs/thread/src/timeconv.inl: In function `void <unnamed>::to_time(int, boost::xtime&)': d:/sources/boost/libs/thread/src/timeconv.inl:24: error: template-argument ` boost::<anonymous enum>' uses anonymous type d:/sources/boost/libs/thread/src/timeconv.inl: In function `void <unnamed>::to_duration(boost::xtime, int&)': d:/sources/boost/libs/thread/src/timeconv.inl:92: error: template-argument ` boost::<anonymous enum>' uses anonymous type d:/sources/boost/libs/thread/src/timeconv.inl: In function `void <unnamed>::to_microduration(const boost::xtime&, int&)': d:/sources/boost/libs/thread/src/timeconv.inl:114: error: template-argument `boost::<anonymous enum>' uses anonymous type [...] As you indicate, the definition of the enum and the actual assertions haven't changed in a very long time, so they likely aren't the problem. Perhaps the compiler configuration or the definition of assert itself changed? I'm not familiar with the compiler, but the error
d:/sources/boost/libs/thread/src/timeconv.inl:24: error: template-argument ` boost::<anonymous enum>' uses anonymous type
implies a template-based implementation of assert which doesn't like the fact that the enumeration has no name. Have you tried giving it a name to see what effect that has?
I found source of this problem - latest changes in boost/function/function_base.hpp. Compiler try to instatiate template from line 533: template<typename Functor> BOOST_FUNCTION_ENABLE_IF_NOT_INTEGRAL(Functor, bool) operator==(const function_base& f, Functor g) { if (const Functor* fp = f.template target<Functor>()) return function_equal(*fp, g); else return false; } Is this intentional? With named enum library compiles successful. Regards, Janusz