Boost logo

Boost :

Subject: Re: [boost] [graph] msvc compile failure with filtered_graph and dijkstra
From: Jürgen Hunold (jhunold_at_[hidden])
Date: 2012-10-08 17:13:52


Hi Jeremiah,

On Monday, 8. October 2012 17:02:56 Jeremiah Willcock wrote:
> On Mon, 8 Oct 2012, Jürgen Hunold wrote:
> > Sorry, that does not fix the problem. Same errors as before.
> > You can also send patches if I shall test something for you.
>
> Exactly the same (same "const filtered_graph" stuff in the beginning) as
> before?

Yes, exactly. ediff'ed both logs, new log attached. Sorry, should have attached
it firsthand, it is getting late here.
 
> > I get the feeling that msvc simply gets confused and fails to recognize
> > the
> > difference between the "struct type" and the nested typedefs also named
> > "x::type". But I might be wrong here and this is a red herring.
>
> It might be related; maybe the compiler is failing to find the member then
> looking for a namespace-scope class instead or something.

Template instantiation magic, sigh. Yes, that seems to be an explanation. I
should dive into "C++ templates" again...

Yours,

Jürgen

-- 
* Dipl.-Math. Jürgen Hunold  ! 
* voice: ++49 4257 300       ! Fährstraße 1
* fax  : ++49 4257 300       ! 31609 Balge/Sebbenhausen
* jhunold_at_gmx.eu             ! Germany

-*- mode: compilation; default-directory: "e:/Home/hunold/src/test/graph/" -*-
Compilation started at Mon Oct 08 22:51:13

b2 gcc msvc
...patience...
...patience...
...found 1273 targets...
...updating 7 targets...
common.mkdir bin\test_graph.test\gcc-mingw-4.6
common.mkdir bin\test_graph.test\gcc-mingw-4.6\debug
gcc.compile.c++ bin\test_graph.test\gcc-mingw-4.6\debug\test_graph.o
test_graph.cpp: In member function 'void UndirectedGraph::dijkstra(const Evaluator&, const Filter&) const [with Evaluator = LengthEvaluator<UndirectedGraph>, Filter = EdgeFilter<UndirectedGraph>]':
test_graph.cpp:101:5: warning: 'nodeSource' may be used uninitialized in this function [-Wuninitialized]
**passed** bin\test_graph.test\gcc-mingw-4.6\debug\test_graph.test
common.mkdir bin\test_graph.test\msvc-9.0\debug
compile-c-c++ bin\test_graph.test\msvc-9.0\debug\test_graph.obj
test_graph.cpp
E:\Home\hunold\src\devel\boost\boost/graph/properties.hpp(222) : error C2039: 'type' : is not a member of 'boost::vertex_property_type<G>'
        with
        [
            G=const boost::filtered_graph<boost::adjacency_list<boost::setS,boost::vecS,boost::undirectedS,boost::no_property,boost::property<boost::edge_info_t,DataEdge *>>,EdgeFilter<UndirectedGraph>>
        ]
        E:\Home\hunold\src\devel\boost\boost/graph/properties.hpp(233) : see reference to class template instantiation 'boost::detail::vertex_property_map<Graph,PropertyTag>' being compiled
        with
        [
            Graph=const boost::filtered_graph<boost::adjacency_list<boost::setS,boost::vecS,boost::undirectedS,boost::no_property,boost::property<boost::edge_info_t,DataEdge *>>,EdgeFilter<UndirectedGraph>>,
            PropertyTag=boost::vertex_index_t
        ]
        E:\Home\hunold\src\devel\boost\boost/graph/named_function_params.hpp(306) : see reference to class template instantiation 'boost::property_map<Graph,Property>' being compiled
        with
        [
            Graph=const boost::filtered_graph<boost::adjacency_list<boost::setS,boost::vecS,boost::undirectedS,boost::no_property,boost::property<boost::edge_info_t,DataEdge *>>,EdgeFilter<UndirectedGraph>>,
            Property=boost::vertex_index_t
        ]
        E:\Home\hunold\src\devel\boost\boost/graph/dijkstra_shortest_paths.hpp(480) : see reference to function template instantiation 'boost::vec_adj_list_vertex_id_map<Property,Vertex> boost::choose_const_pmap<boost::param_not_found,VertexListGraph,boost::vertex_index_t>(const Param &,const Graph &,PropertyTag)' being compiled
        with
        [
            Property=boost::no_property,
            Vertex=unsigned int,
            VertexListGraph=boost::filtered_graph<boost::adjacency_list<boost::setS,boost::vecS,boost::undirectedS,boost::no_property,boost::property<boost::edge_info_t,DataEdge *>>,EdgeFilter<UndirectedGraph>>,
            Param=boost::param_not_found,
            Graph=boost::filtered_graph<boost::adjacency_list<boost::setS,boost::vecS,boost::undirectedS,boost::no_property,boost::property<boost::edge_info_t,DataEdge *>>,EdgeFilter<UndirectedGraph>>,
            PropertyTag=boost::vertex_index_t
        ]
        test_graph.cpp(104) : see reference to function template instantiation 'void boost::dijkstra_shortest_paths<boost::filtered_graph<Graph,EdgePredicate>,Evaluator,boost::edge_weight_t,boost::bgl_named_params<T,Tag,Base>>(const VertexListGraph &,unsigned int,const boost::bgl_named_params<Evaluator,boost::edge_weight_t,boost::bgl_named_params<T,Tag,Base>> &)' being compiled
        with
        [
            Graph=boost::adjacency_list<boost::setS,boost::vecS,boost::undirectedS,boost::no_property,boost::property<boost::edge_info_t,DataEdge *>>,
            EdgePredicate=EdgeFilter<UndirectedGraph>,
            Evaluator=LengthEvaluator<UndirectedGraph>,
            T=unsigned int *,
            Tag=boost::vertex_predecessor_t,
            Base=boost::no_property,
            VertexListGraph=boost::filtered_graph<boost::adjacency_list<boost::setS,boost::vecS,boost::undirectedS,boost::no_property,boost::property<boost::edge_info_t,DataEdge *>>,EdgeFilter<UndirectedGraph>>
        ]
        test_graph.cpp(109) : see reference to function template instantiation 'void UndirectedGraph::dijkstra<LengthEvaluator<Graph>,EdgeFilter<Graph>>(const LengthEvaluator<Graph> &,const EdgeFilter<Graph> &) const' being compiled
        with
        [
            Graph=UndirectedGraph
        ]
E:\Home\hunold\src\devel\boost\boost/graph/properties.hpp(223) : error C3203: 'type' : unspecialized class template can't be used as a template argument for template parameter 'Property', expected a real type
E:\Home\hunold\src\devel\boost\boost/graph/properties.hpp(223) : error C2955: 'boost::type' : use of class template requires template argument list
        E:\Home\hunold\src\devel\boost\boost/type.hpp(14) : see declaration of 'boost::type'
E:\Home\hunold\src\devel\boost\boost/graph/properties.hpp(224) : error C2955: 'boost::detail::dummy_vertex_property_selector::bind_' : use of class template requires template argument list
        E:\Home\hunold\src\devel\boost\boost/graph/properties.hpp(173) : see declaration of 'boost::detail::dummy_vertex_property_selector::bind_'

    call "C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\vcvarsall.bat" x86 >nul
cl /Zm800 -nologo @"bin\test_graph.test\msvc-9.0\debug\test_graph.obj.rsp"

...failed compile-c-c++ bin\test_graph.test\msvc-9.0\debug\test_graph.obj...
...failed updating 1 target...
...skipped 1 target...
...updated 5 targets...

Compilation exited abnormally with code 1 at Mon Oct 08 22:51:22


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk