|
Boost : |
From: John Maddock (john_at_[hidden])
Date: 2006-02-22 14:09:54
> 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.
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk