[MacPorts] #34227: boost::get() calls wrongly resolved by g++
MacPorts
noreply at macports.org
Thu Apr 26 08:57:04 PDT 2012
#34227: boost::get() calls wrongly resolved by g++
----------------------------------+-----------------------------------------
Reporter: roland@… | Owner: macports-tickets@…
Type: defect | Status: new
Priority: Normal | Milestone:
Component: ports | Version: 2.0.4
Keywords: | Port: boost
----------------------------------+-----------------------------------------
The current version of Boost available in the MacPorts (port `boost
1.49.0`) seems to make g++ wrongly resolve some calls to boost::get().
The attached C++ code `boost-get-test-ko.cc` does not compile properly
with all the g++ compiler I used (Apple g++ 4.2, MacPorts g++ 4.4, 4.5,
4.6, 4.7) on my machine (2010 MacBook Pro w/ Mac OS X version 10.6.8).
These compilers try to use `boost::get()` from
`/opt/local/include/boost/graph/reverse_graph.hpp` instead of
`boost::get()` from `/opt/local/include/boost/variant/get.hpp`, leading to
this kind of error messages:
{{{
% g++-mp-4.7 -I/opt/local/include boost-get-test-ko.cc
In file included from
/opt/local/include/boost/graph/vector_as_graph.hpp:23:0,
from
/opt/local/include/boost/graph/transitive_closure.hpp:17,
from boost-get-test-ko.cc:2:
/opt/local/include/boost/graph/graph_traits.hpp: In instantiation of
'struct boost::graph_traits<int>':
/opt/local/include/boost/graph/reverse_graph.hpp:472:1: required by
substitution of 'template<class Graph, class GRef> typename
boost::graph_traits<Graph>::edge_descriptor
boost::get(boost::edge_underlying_t, const
boost::reverse_graph<BidirectionalGraph, GraphRef>&, const typename
boost::graph_traits<boost::reverse_graph<BidirectionalGraph, GraphRef>
>::edge_descriptor&) [with Graph = int; GRef = <missing>]'
boost-get-test-ko.cc:7:28: required from here
/opt/local/include/boost/graph/graph_traits.hpp:30:52: error: 'int' is not
a class, struct, or union type
/opt/local/include/boost/graph/graph_traits.hpp:31:52: error: 'int' is not
a class, struct, or union type
/opt/local/include/boost/graph/graph_traits.hpp:32:52: error: 'int' is not
a class, struct, or union type
/opt/local/include/boost/graph/graph_traits.hpp:33:52: error: 'int' is not
a class, struct, or union type
/opt/local/include/boost/graph/graph_traits.hpp:34:52: error: 'int' is not
a class, struct, or union type
/opt/local/include/boost/graph/graph_traits.hpp:35:52: error: 'int' is not
a class, struct, or union type
/opt/local/include/boost/graph/graph_traits.hpp:36:52: error: 'int' is not
a class, struct, or union type
/opt/local/include/boost/graph/graph_traits.hpp:38:52: error: 'int' is not
a class, struct, or union type
/opt/local/include/boost/graph/graph_traits.hpp:39:52: error: 'int' is not
a class, struct, or union type
/opt/local/include/boost/graph/graph_traits.hpp:40:52: error: 'int' is not
a class, struct, or union type
/opt/local/include/boost/graph/graph_traits.hpp:42:52: error: 'int' is not
a class, struct, or union type
/opt/local/include/boost/graph/graph_traits.hpp:43:52: error: 'int' is not
a class, struct, or union type
/opt/local/include/boost/graph/graph_traits.hpp:44:52: error: 'int' is not
a class, struct, or union type
}}}
If the `#include <boost/graph/transitive_closure.hpp>` statement is
removed (see attached file `boost-get-test-ok.cc`, no compiling error
arises.
The versions of `clang++` I tried (MacPorts clang++ 2.9, 3.0 and 3.1) have
no trouble compiling both files.
--
Ticket URL: <https://trac.macports.org/ticket/34227>
MacPorts <http://www.macports.org/>
Ports system for Mac OS
More information about the macports-tickets
mailing list