|
Boost : |
From: Ralf W. Grosse-Kunstleve (rwgk_at_[hidden])
Date: 2004-06-23 11:28:37
With the latest Boost CVS compilation of
boost/libs/python/src/object/inheritance.cpp
with the old IRIX MIPSpro compiler (EDG 238) fails for this code in
boost/boost/graph/properties.hpp:
namespace detail {
template<typename VertexBundle, typename EdgeBundle>
type_traits::yes_type is_vertex_bundle_helper(VertexBundle*);
template<typename VertexBundle, typename EdgeBundle>
type_traits::no_type is_vertex_bundle_helper(EdgeBundle*);
template<typename VertexBundle, typename EdgeBundle, typename Bundle>
struct is_vertex_bundle
{
BOOST_STATIC_CONSTANT(bool, value =
((sizeof(is_vertex_bundle_helper<VertexBundle, EdgeBundle>((Bundle*)0))
== sizeof(type_traits::yes_type))));
};
}
The error is:
cc-1278 CC: ERROR File = /txusr/rwgrosse/hot/boost/boost/graph/properties.hpp,
Line = 363
No instance of overloaded function "boost::detail::is_vertex_bundle_helper"
matches the argument list.
The argument types are: (Bundle *).
BOOST_STATIC_CONSTANT(bool, value =
((sizeof(is_vertex_bundle_helper<VertexBundle, EdgeBundle>((Bundle*)0))
^
I tried to rearrange the code a bit:
namespace detail {
template<typename VertexBundle, typename EdgeBundle>
struct is_vertex_bundle_helper
{
static
type_traits::yes_type get(VertexBundle*);
static
type_traits::no_type get(EdgeBundle*);
};
template<typename VertexBundle, typename EdgeBundle, typename Bundle>
struct is_vertex_bundle
{
typedef is_vertex_bundle_helper<VertexBundle, EdgeBundle> helper_t;
BOOST_STATIC_CONSTANT(bool, value =
((sizeof(helper_t::get((Bundle*)0)) == sizeof(type_traits::yes_type))));
};
}
This still compiles with other compilers (gcc 3.4 and EDG 245), but
not with the old EDG 238:
cc-1108 CC: ERROR File = /txusr/rwgrosse/hot/boost/boost/graph/properties.hpp,
Line = 368
The indicated expression must have pointer-to-function type.
BOOST_STATIC_CONSTANT(bool, value =
((sizeof(helper_t::get((Bundle*)0)) == sizeof(type_traits::yes_type))));
^
It doesn't even compile if I simplify the code like this:
cc-1108 CC: ERROR File = /txusr/rwgrosse/hot/boost/boost/graph/properties.hpp,
Line = 371
The indicated expression must have pointer-to-function type.
static const std::size_t value1 = sizeof(helper_t::get((Bundle*)0));
^
1 error detected in the compilation of
"/txusr/rwgrosse/hot/boost/libs/python/sr
I am lost here. Suggestions for workarounds are very much appreciated.
It used to compile with the CVS from a couple of days ago. It is
important to us to get the IRIX build working again.
Thanks in advance,
Ralf
P.S.: inheritance.cpp compiles if I simply set
BOOST_STATIC_CONSTANT(bool, value = false);
Therefore I was hopeful that the problem can be fixed by rearranging the code
fragments shown above.
__________________________________
Do you Yahoo!?
Yahoo! Mail - 50x more storage than other providers!
http://promotions.yahoo.com/new_mail
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk