#34227 closed defect (invalid)
boost::get() calls wrongly resolved by g++
Reported by: | roland@… | Owned by: | adfernandes (Andrew Fernandes) |
---|---|---|---|
Priority: | Normal | Milestone: | |
Component: | ports | Version: | 2.0.4 |
Keywords: | Cc: | ||
Port: | boost |
Description
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.
Attachments (2)
Change History (5)
Changed 13 years ago by roland@…
Attachment: | boost-get-test-ko.cc added |
---|
Changed 13 years ago by roland@…
Attachment: | boost-get-test-ok.cc added |
---|
comment:1 follow-up: 3 Changed 13 years ago by ryandesign (Ryan Carsten Schmidt)
Owner: | changed from macports-tickets@… to adfernandes@… |
---|
comment:2 Changed 13 years ago by adfernandes (Andrew Fernandes)
Resolution: | → invalid |
---|---|
Status: | new → closed |
Your compiler, OS, and architecture are on the "supported" list of boost
, so it is likely either a bug in boost
or, based on your description I'd guess it is a bug in gcc
.
You can report bugs to the boost
team here, and bugs to the gcc
team here.
The MacPorts bug database is really for bugs in the building and installation of software, not the packages themselves. To manage a project as big as MacPorts, you have to be careful who has responsibility over what piece! Please do file a bug with both teams, it's really the only way that things like this get fixed upstream.
comment:3 Changed 13 years ago by roland@…
Replying to ryandesign@…:
I'm uncertain what you would have the MacPorts team do in regard to this problem. Sounds like a problem that needs to be corrected by the developers of Boost, to whom I would suggest you report the problem.
All right, I'll contact them. Thanks for your prompt reply.
I'm uncertain what you would have the MacPorts team do in regard to this problem. Sounds like a problem that needs to be corrected by the developers of Boost, to whom I would suggest you report the problem.