Re: [Boost-bugs] [Boost C++ Libraries] #11374: find_flow_cost() not working with bundled or user-defined properties

Subject: Re: [Boost-bugs] [Boost C++ Libraries] #11374: find_flow_cost() not working with bundled or user-defined properties
From: Boost C++ Libraries (noreply_at_[hidden])
Date: 2016-03-02 17:08:10


#11374: find_flow_cost() not working with bundled or user-defined properties
------------------------------------------+----------------------
  Reporter: Maël Valais <mael.valais@…> | Owner: jewillco
      Type: Bugs | Status: new
 Milestone: To Be Determined | Component: graph
   Version: Boost 1.57.0 | Severity: Problem
Resolution: | Keywords:
------------------------------------------+----------------------

Comment (by Maël Valais <mael.valais@…>):

 Also a closely related bug:

 I wanted to use `find_flow_cost()` with the named parameter feature (as
 well as my bundled properties).
 Here is a small example that should work but doesn't:

 {{{#!cpp
 #include <boost/config.hpp>
 #include <iostream>
 #include <string>
 #include <boost/graph/edmonds_karp_max_flow.hpp>
 #include <boost/graph/adjacency_list.hpp>
 #include <boost/graph/read_dimacs.hpp>
 #include <boost/graph/graph_utility.hpp>
 #include <boost/graph/find_flow_cost.hpp>

 using namespace boost;
 typedef adjacency_list_traits<vecS,vecS,directedS> traits;
 struct edge_t {
         double capacity;
         float cost;
         float residual_capacity;
         traits::edge_descriptor reversed_edge;
 };
 struct node_t {
         std::string name;
         boost::default_color_type color;
         traits::edge_descriptor predecessor;
 };
 typedef adjacency_list < listS, vecS, directedS, node_t, edge_t > Graph;

 int main()
 {
         Graph g;
         property_map < Graph, double edge_t::* >::type capacity =
 get(&edge_t::capacity, g);
         property_map < Graph, float edge_t::* >::type cost =
 get(&edge_t::cost, g);
         property_map < Graph, float edge_t::* >::type residual_capacity =
 get(&edge_t::residual_capacity, g);
         property_map < Graph, traits::edge_descriptor edge_t::* >::type
 rev = get(&edge_t::reversed_edge, g);
         property_map < Graph, std::string node_t::* >::type name =
 get(&node_t::name, g);
         property_map < Graph, boost::default_color_type node_t::* >::type
 col = get(&node_t::color, g);
         property_map < Graph, traits::edge_descriptor node_t::* >::type
 pred = get(&node_t::predecessor, g);
         traits::vertex_descriptor s, t;
         read_dimacs_max_flow(g, capacity, rev, s, t);

         // XXX The "bundled properties" & "named parameters" version
 (producing errors)
         find_flow_cost(g,
                         capacity_map(capacity)
                         .residual_capacity_map(residual_capacity)
                         .weight_map(cost));

         return EXIT_SUCCESS;
 }
 }}}

-- 
Ticket URL: <https://svn.boost.org/trac/boost/ticket/11374#comment:3>
Boost C++ Libraries <http://www.boost.org/>
Boost provides free peer-reviewed portable C++ source libraries.

This archive was generated by hypermail 2.1.7 : 2017-02-16 18:50:19 UTC