
We've stumbled across an incompatiblity in mixing TR1 stuff from GCC 4.3 and Boost. The smallest test case is simply
#include
#include This fails because GCC's array declares and specializes the GCC's tuple_size and tuple_element, while boost/tr1/tuple.hpp by default uses ::boost::fusion::tuple_size and tuple_element.
That's a known issue: you can't mix Boost.TR1 with another implementation since they both want to use the std::tr1 namespace.
It appears that defining BOOST_HAS_GCC_TR1 before including the boost libraries will solve the problem. Is there a better way?
No not really, unless you use the GCC TR1 implementation throughout?
More importantly, this is code in part of library used by a number of other projects. Will we have to recompile the boost libraries (we're using the current Ubuntu package), and/or any of our projects that link against this code, or should linkage not be a problem?
No recompilation necessary: Boost.TR1 is just a set of header-only thin wrappers around other code. HTH, John.