Opened 17 years ago

Closed 17 years ago

#511 closed Bugs (Duplicate)

predicates without default constructor fail to compile

Reported by: nobody Owned by: nobody
Milestone: Component: graph
Version: None Severity:
Keywords: Cc:

Description

  I want to draw your attention to a possible flaw in the 
implementation of the write_graphviz method from the 
Boost Graph Library.

  The current implementation uses the assignment 
operator for the vertex and edge iterators. This is natural, 
but some examples fail to compile with
this version. The problem comes from the predicates 
witch don't have default constructors. 

  When trying to assign a vertex iterator of a graph 
filtered with such a predicate, the compiler issues an 
error:

C2512:'positive_edge_weight_pred<MyEdgeWeightMap>'
 : no appropriate default constructor available
        with
        [
            MyEdgeWeightMap=EdgeWeightMapT
        ]

  If a small modification in the write_graphviz 
implementation is made (using copy constructors 
instead of assignement operators), the example 
compiles and runs sucesfully. I am using the Microsoft 
Visual C++ 7.1 compiler.

  In conclusion, I think that this modification should be 
made, as it grows the flexibility of the library and doesn't 
add any overhead.

  I have attached the example (main.cpp) and the patch 
for graphviz.hpp (graphviz.hpp.patch).

  My e-mail adress is pdumitrache@bphx.ro

Change History (2)

comment:1 by Daryle Walker, 17 years ago

Logged In: YES 
user_id=551024

The submitter forgot to attach the example/patch.  That person made up for 
this by recreating the message as a new tracker with the files attached.  So this 
tracker should be closed as a duplicate of the second one (#1353875).

comment:2 by Daryle Walker, 17 years ago

Status: assignedclosed
Note: See TracTickets for help on using tickets.