
This is my first post here, so please do not hesitate in letting me know if this is not the correct forum for my question.
This is fine.
In 1.33.1, we are producing an error that is_convertible is not a type on line 95 of boost/type_traits/is_enum.hpp. We get this error when running tests in libs/filesystem/test.
From what I can tell, the problem is that is_convertible requires is_enum be defined which in turn requires is_convertible to be defined. The include path for the particular test has:
boost/filesystem/exception.hpp-> /boost/filesystem/path.hpp /boost/filesystem/path.hpp-> boost/iterator/iterator_facade.hpp boost/iterator/iterator_facade.hpp-> boost/iterator/interoperable.hpp boost/iterator/interoperable.hpp-> boost/type_traits/is_convertible.hpp
[This include is conditional on BOOST_NO_IS_ABSTRACT] boost/type_traits/is_convertible.hpp-> boost/type_traits/is_abstract.hpp
boost/type_traits/is_abstract.hpp-> boost/type_traits/is_class.hpp boost/type_traits/is_class.hpp-> boost/type_traits/is_scalar.hpp boost/type_traits/is_scalar.hpp-> boost/type_traits/is_enum.hpp
Setting BOOST_NO_IS_ABSTRACT does solve the issue, however I don't think it is the *best* solution.
OK, I see the issue: there is a cyclic dependency, however all the other compilers for which we can implement is_abstract we also define BOOST_TT_HAS_CONFORMING_IS_CLASS_IMPLEMENTATION which neatly avoids the cyclic dependency. I'm not sure how to fix this one except to advise you to try setting the above macro. Of course if your tool is available to third parties this may not be the ideal solution for them... ? John.