Opened 21 years ago
Closed 21 years ago
#12 closed Bugs (Fixed)
Can't specify VertexPredicate
| Reported by: | nobody | Owned by: | jsiek |
|---|---|---|---|
| Milestone: | Component: | graph | |
| Version: | None | Severity: | |
| Keywords: | Cc: |
Description
From boost_1_25_1/boost/graph/filtered_graph.hpp, line
230:
template <typename Graph, typename EdgePredicate,
typename VertexPredicate>
inline filtered_graph<Graph, EdgePredicate,
VertexPredicate>
make_filtered_graph(Graph& g, EdgePredicate ep,
VertexPredicate vp) {
return filtered_graph<Graph, EdgePredicate>(g, ep,
vp);
}
make_filtered_graph is a template function, one of
whose template parameters is VertexPredicate. However,
the filtered_graph object returned by the function does
not make use of this type.
I propose that line 233 should read:
return filtered_graph<Graph, EdgePredicate,
VertexPredicate>(g, ep, vp);
I'm using g++ 2.95.3 on Solaris 2.8 for sparc. For the
following test case:
#include <boost/graph/filtered_graph.hpp>
#include <boost/graph/adjacency_list.hpp>
using namespace boost;
struct NotMuchOfAFilter
{
template<class Vertex> bool operator()(Vertex key)
const { return true; }
};
int main()
{
adjacency_list<> graph;
make_filtered_graph(graph, keep_all(),
NotMuchOfAFilter());
}
g++ test.C -ftemplate-depth-30 -Iboost_1_25_1
yields:
boost_1_25_1/boost/graph/filtered_graph.hpp: In
function `class
boost::filtered_graph<boost::adjacency_list<boost::vecS,boost::vecS,boost::directedS,boost::no_property,boost::no_property,boost::no_property,boost::listS>,boost::keep_all,NotMuchOfAFilter>
boost::make_filtered_graph<boost::adjacency_list<boost::vecS,boost::vecS,boost::directedS,boost::no_property,boost::no_property,boost::no_property,boost::listS>,
boost::keep_all,
NotMuchOfAFilter>(boost::adjacency_list<boost::vecS,boost::vecS,boost::directedS,boost::no_property,boost::no_property,boost::no_property,boost::listS>
&, boost::keep_all, NotMuchOfAFilter)':
test.C:14: instantiated from here
boost_1_25_1/boost/graph/filtered_graph.hpp:233: no
matching function for call to
`boost::filtered_graph<boost::adjacency_list<boost::vecS,boost::vecS,boost::directedS,boost::no_property,boost::no_property,boost::no_property,boost::listS>,boost::keep_all,boost::keep_all>::filtered_graph
(boost::adjacency_list<boost::vecS,boost::vecS,boost::directedS,boost::no_property,boost::no_property,boost::no_property,boost::listS>
&, boost::keep_all &, NotMuchOfAFilter &)'
boost_1_25_1/boost/graph/filtered_graph.hpp:156:
candidates are:
boost::filtered_graph<boost::adjacency_list<boost::vecS,boost::vecS,boost::directedS,boost::no_property,boost::no_property,boost::no_property,boost::listS>,boost::keep_all,boost::keep_all>::filtered_graph(const
boost::adjacency_list<boost::vecS,boost::vecS,boost::directedS,boost::no_property,boost::no_property,boost::no_property,boost::listS>
&, boost::keep_all)
boost_1_25_1/boost/graph/filtered_graph.hpp:159:
boost::filtered_graph<boost::adjacency_list<boost::vecS,boost::vecS,boost::directedS,boost::no_property,boost::no_property,boost::no_property,boost::listS>,boost::keep_all,boost::keep_all>::filtered_graph(const
boost::adjacency_list<boost::vecS,boost::vecS,boost::directedS,boost::no_property,boost::no_property,boost::no_property,boost::listS>
&, boost::keep_all, boost::keep_all)
boost_1_25_1/boost/graph/filtered_graph.hpp:219:
boost::filtered_graph<boost::adjacency_list<boost::vecS,boost::vecS,boost::directedS,boost::no_property,boost::no_property,boost::no_property,boost::listS>,boost::keep_all,boost::keep_all>::filtered_graph(const
boost::filtered_graph<boost::adjacency_list<boost::vecS,boost::vecS,boost::directedS,boost::no_property,boost::no_property,boost::no_property,boost::listS>,boost::keep_all,boost::keep_all>
&)
boost_1_25_1/boost/graph/filtered_graph.hpp:233:
warning: control reaches end of non-void function
`boost::make_filtered_graph<boost::adjacency_list<boost::vecS,boost::vecS,boost::directedS,boost::no_property,boost::no_property,boost::no_property,boost::listS>,
boost::keep_all,
NotMuchOfAFilter>(boost::adjacency_list<boost::vecS,boost::vecS,boost::directedS,boost::no_property,boost::no_property,boost::no_property,boost::listS>
&, boost::keep_all, NotMuchOfAFilter)
Making the change I noted above causes the code to
compile and run correctly.
Keep up the good work on boost and the boost graph
library. Congratulations on the new book!
Note:
See TracTickets
for help on using tickets.
