Boost logo

Boost Users :

From: gast128 (gast128_at_[hidden])
Date: 2007-06-06 07:05:55


Aaron Windsor <aaron.windsor <at> gmail.com> writes:

>
> On 6/5/07, gast128 <gast128 <at> hotmail.com> wrote:
> > Aaron Windsor <aaron.windsor <at> gmail.com> writes:
> >
> > >
> > > On 6/4/07, gast128 <gast128 <at> hotmail.com> wrote:
> > > > Dear all,
> > > >
> > > > We want to (DLL) export a boost graph. Probably on (DLL) exporting, the
> > > > compiler tries to generate code for every member function. However on
> > VC++7.1
> > > > it gives then a problem with operator[]. This can be easily verified
with
> > the
> > > > following case:
> > > >
> > > > void Foo()
> > > > {
> > > > boost::adjacency_list<> graph;
> > > > graph[0];
> > > > }
> > > >
> > > > We use here Boost 1.33.0. Anyone an idea?
> > > >
> > > > Wkr,
> > > > me
> > >
> > > Hi,
> > >
> > > What are you expecting the expression "graph[0]" to do/return in the code
> > above?
> > >
> > > Regards,
> > > Aaron
> > >
> >
> > Nothing. It won't compile, complaining about return type. Same error if you
> > try to export an adjacency_list.
> >
> > Wkr,
> > me
>
> graph[0] accesses the bundled properties for the first vertex in the
> graph, but you've declared an empty graph with no properties. So, even
> if you got it to compile by adding some properties to the graph, 0
> still isn't even a valid vertex descriptor, since the graph is empty.
>
> Regards,
> Aaron
>

But that 's the problem I can't get it compile, even if I don't use an empty
graph, e.g.:

void Foo()
{
    boost::adjacency_list<> graph;
    boost::adjacency_list<>::vertex_descriptor v = add_vertex(graph);
    graph[v];
}

c:\Work Sdk\Boost\boost\graph\adjacency_list.hpp(412) : error
C2440: 'return' : cannot convert
from 'boost::vec_adj_list_any_vertex_pa::bind_<Tag,Graph,Property>::value_type'
 to 'boost::adjacency_list<>::vertex_bundled &'
        with
        [
            Tag=boost::vertex_bundle_t,
            Graph=boost::adjacency_list<>,
            
Property=boost::detail::vertex_property_map<boost::adjacency_list<>,boost::vert
ex_bundle_t>::Property
        ]
        A reference that is not to 'const' cannot be bound to a non-lvalue
        c:\Work Sdk\Boost\boost\graph\adjacency_list.hpp(412) : while
compiling class-template member
function 'boost::adjacency_list<>::vertex_bundled
&boost::adjacency_list<>::operator []
(boost::adjacency_list<>::vertex_descriptor)'
        c:\Work\Test\Testmfc\Test Boost Graph\KTestBoostGrphCompileError.cpp
(26) : see reference to class template instantiation 'boost::adjacency_list<>'
being compiled

Wkr,
me


Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net