Boost C++ Libraries: Ticket #10382: 1.56.0 Graph adjacency_list has compile errors on g++ 4.6.4 https://svn.boost.org/trac10/ticket/10382 <p> The following code will generate compile errors on g++ 4.6.4 but works on g++ 4.7 and 4.8. The problem looks to be in detail/adjacency_list.hpp:319-21 where the = default; specification is unable to generate a valid implementation so the move operators become implicitly deleted. </p> <pre class="wiki">#include "boost/graph/adjacency_list.hpp" int main(int argc, char** argv) { using boost::adjacency_list; using boost::vecS; using boost::directedS; typedef adjacency_list&lt;vecS, vecS, directedS, boost::default_color_type&gt; Graph; std::vector&lt; std::pair&lt;int, int&gt; &gt; testVec; auto graph = Graph( begin(testVec), end(testVec), testVec.size()); return 0; } </pre> en-us Boost C++ Libraries /htdocs/site/boost.png https://svn.boost.org/trac10/ticket/10382 Trac 1.4.3 Conrad Mercer <conrad.mercer@…> Wed, 20 Aug 2014 05:41:37 GMT attachment set https://svn.boost.org/trac10/ticket/10382 https://svn.boost.org/trac10/ticket/10382 <ul> <li><strong>attachment</strong> → <span class="trac-field-new">adjacency_list.hpp</span> </li> </ul> <p> Attached a patched version of adjacency_list.hpp that resolves the compile errors </p> Ticket Conrad Mercer <conrad.mercer@…> Wed, 20 Aug 2014 05:45:20 GMT <link>https://svn.boost.org/trac10/ticket/10382#comment:1 </link> <guid isPermaLink="false">https://svn.boost.org/trac10/ticket/10382#comment:1</guid> <description> <p> Figured the precise cause of this, as detailed here: <a class="ext-link" href="http://stackoverflow.com/questions/25395805/compile-error-with-boost-graph-1-56-0-and-g-4-6-4"><span class="icon">​</span>http://stackoverflow.com/questions/25395805/compile-error-with-boost-graph-1-56-0-and-g-4-6-4</a>. The problem is that stored_edge is the base of stored_edge_property and it doesn't define move operators preventing stored_edge_property from doing so when it tries to. </p> </description> <category>Ticket</category> </item> <item> <author>Conrad Mercer <conrad.mercer@…></author> <pubDate>Wed, 20 Aug 2014 05:49:34 GMT</pubDate> <title/> <link>https://svn.boost.org/trac10/ticket/10382#comment:2 </link> <guid isPermaLink="false">https://svn.boost.org/trac10/ticket/10382#comment:2</guid> <description> <p> Just a quick clarification for the uploaded adjacency_list.hpp; it demonstrates how the problem can be resolved but is not correctly switched for compiler versions etc </p> </description> <category>Ticket</category> </item> <item> <author>mikael.s.persson@…</author> <pubDate>Wed, 20 Aug 2014 22:13:39 GMT</pubDate> <title/> <link>https://svn.boost.org/trac10/ticket/10382#comment:3 </link> <guid isPermaLink="false">https://svn.boost.org/trac10/ticket/10382#comment:3</guid> <description> <p> Here is a git-diff style patch for this. </p> <p> For the switching for compiler versions, I just assumed the three cases covered in the stored_edge_property class, that is: no rvalue support (legacy code); rvalue and defaulting support (defaulted move functions); and, the "msvc" exception for quirky defaulting behavior. In the legacy version, no additional code is required in stored_edge. In the "msvc" exception, there is also nothing required because the move functions in stored_edge_property rely on the copy functions of stored_edge (which is fine if "Vertex" is a POD-type, which is the case for all adj-list variations). So, the only real code is the default move functions added for that case when rvalue and defaulting is well supported. </p> <p> I also added a defaulted copy-constructor for stored_edge. This is because stored_edge is copyable in all other cases (and providing a move-constructor disables the implicit copy-constructor), and therefore, should remain so to minimize the chance of any other collateral damage elsewhere. </p> </description> <category>Ticket</category> </item> <item> <author>mikael.s.persson@…</author> <pubDate>Wed, 20 Aug 2014 22:14:34 GMT</pubDate> <title>attachment set https://svn.boost.org/trac10/ticket/10382 https://svn.boost.org/trac10/ticket/10382 <ul> <li><strong>attachment</strong> → <span class="trac-field-new">boost_bug10382.patch</span> </li> </ul> <p> Patch on stored_edge class for bug10382 </p> Ticket mhassert@… Mon, 06 Oct 2014 19:01:20 GMT <link>https://svn.boost.org/trac10/ticket/10382#comment:4 </link> <guid isPermaLink="false">https://svn.boost.org/trac10/ticket/10382#comment:4</guid> <description> <p> Mikael, thanks for the patch! </p> <p> But I think there's a small typo in there. Instead of </p> <pre class="wiki"> #if !(defined(BOOST_MSVC) || (defined(BOOST_GCC) || (BOOST_GCC / 100) &lt; 406)) </pre><p> it should read </p> <pre class="wiki"> #if !(defined(BOOST_MSVC) || (defined(BOOST_GCC) &amp;&amp; (BOOST_GCC / 100) &lt; 406)) </pre><p> That is, "&amp;&amp;" instead of "||". </p> </description> <category>Ticket</category> </item> <item> <dc:creator>anonymous</dc:creator> <pubDate>Mon, 06 Oct 2014 19:26:43 GMT</pubDate> <title/> <link>https://svn.boost.org/trac10/ticket/10382#comment:5 </link> <guid isPermaLink="false">https://svn.boost.org/trac10/ticket/10382#comment:5</guid> <description> <p> Replying to <a class="ticket" href="https://svn.boost.org/trac10/ticket/10382#comment:4" title="Comment 4">mhassert@…</a>: </p> <p> Yes I had noticed that typo before, I had it fixed in the pending pull request that I issued: </p> <p> github &lt;dot&gt; com / boostorg / graph / pull / 18 </p> <p> Hopefully it will be merged eventually.... </p> </description> <category>Ticket</category> </item> <item> <author>phreakuencies@…</author> <pubDate>Fri, 17 Oct 2014 16:05:15 GMT</pubDate> <title/> <link>https://svn.boost.org/trac10/ticket/10382#comment:6 </link> <guid isPermaLink="false">https://svn.boost.org/trac10/ticket/10382#comment:6</guid> <description> <p> Hi, I'm using gcc 4.9 (on archlinux) and had this bug (complained about deleted operator on stored_edge_property), which appeared when using adjacency_list with listS/vecS. I added this patch and it did not change the behavior (bug still appears). I noticed it is only enabled on a specific version of GCC and thus I removed that condition but it made no difference. I looked into the .hpp file (unpatched) and noticed there was a similar condition for stored_edge_property, which now looks like this and the bug disappeared (changed first line of this code): </p> <pre class="wiki">#if defined(BOOST_MSVC) || (defined(BOOST_GCC)) stored_edge_property(self&amp;&amp; x) : Base(static_cast&lt; Base const&amp; &gt;(x)) { m_property.swap(x.m_property); } stored_edge_property(self const&amp; x) : Base(static_cast&lt; Base const&amp; &gt;(x)) { m_property.swap(const_cast&lt;self&amp;&gt;(x).m_property); } self&amp; operator=(self&amp;&amp; x) { Base::operator=(static_cast&lt; Base const&amp; &gt;(x)); m_property = std::move(x.m_property); return *this; } self&amp; operator=(self const&amp; x) { Base::operator=(static_cast&lt; Base const&amp; &gt;(x)); m_property = std::move(const_cast&lt;self&amp;&gt;(x).m_property); return *this; } </pre> </description> <category>Ticket</category> </item> <item> <author>mikael.s.persson@…</author> <pubDate>Fri, 17 Oct 2014 19:12:54 GMT</pubDate> <title/> <link>https://svn.boost.org/trac10/ticket/10382#comment:7 </link> <guid isPermaLink="false">https://svn.boost.org/trac10/ticket/10382#comment:7</guid> <description> <p> @phreakuencies: Did you make sure to make the correction that mhassert posted 11 days ago (which also had on my pull request)? The thing is that the special code, that is conditionally applied there, is not suppose to cause problems with later versions of GCC (otherwise, several other parts of Boost would break too!). It would be useful to see the actual errors you are getting with this, in addition to the state of the code (stored_edge_property and stored_edge) that corresponds to that error. </p> <p> I'm not sure what's causing this issue for GCC 4.9. But in light of this, I would recommend that the whole thing be simplified. I think the original idea was to use the implicit default operators / constructors whenever possible (to keep the class "trivial", in the standard sense). But compilers have had a rocky history with defaulting and implicitly deleting operators / constructors, so it might be easier to just abandon the idea altogether. But of course, this is a decision for the maintainer (Jeremiah), which seems to have fallen off the grid for several months now. </p> </description> <category>Ticket</category> </item> <item> <author>phreakuencies@…</author> <pubDate>Sat, 18 Oct 2014 13:07:00 GMT</pubDate> <title>attachment set https://svn.boost.org/trac10/ticket/10382 https://svn.boost.org/trac10/ticket/10382 <ul> <li><strong>attachment</strong> → <span class="trac-field-new">adjacency_list.2.hpp</span> </li> </ul> <p> original archlinux adjacency_list.hpp </p> Ticket phreakuencies@… Sat, 18 Oct 2014 13:07:30 GMT attachment set https://svn.boost.org/trac10/ticket/10382 https://svn.boost.org/trac10/ticket/10382 <ul> <li><strong>attachment</strong> → <span class="trac-field-new">adjacency_list_fixed.hpp</span> </li> </ul> <p> adjacency list fixed for 4.9 </p> Ticket phreakuencies@… Sat, 18 Oct 2014 13:11:21 GMT <link>https://svn.boost.org/trac10/ticket/10382#comment:8 </link> <guid isPermaLink="false">https://svn.boost.org/trac10/ticket/10382#comment:8</guid> <description> <p> Hi, yes, I changed the "or" to "and". The fix proposed here is not the problem. I applied the patch first and did not change behavior. I had the "deleted operator" message. I looked at the file, and realized there was already a conditional code which (as I understand) was only enabled for previous compilers. Once I re-enabled that, it started working. </p> <p> Here's the error produced (attach original and modified files): </p> <pre class="wiki">In file included from /usr/include/c++/4.9.1/memory:64:0, from /usr/include/boost/config/no_tr1/memory.hpp:21, from /usr/include/boost/smart_ptr/shared_ptr.hpp:23, from /usr/include/boost/shared_ptr.hpp:17, from /usr/include/boost/property_map/vector_property_map.hpp:14, from /usr/include/boost/property_map/property_map.hpp:600, from /home/v01d/coding/ros/src/surfnav/src/lib/map.cpp:1: /usr/include/c++/4.9.1/bits/stl_construct.h: In instantiation of ‘void std::_Construct(_T1*, _Args&amp;&amp; ...) [with _T1 = boost::detail::stored_edge_property&lt;long unsigned int, boost::property&lt;boost::edge_index_t, long unsigned int, boost::shared_ptr&lt;surfnav::Segment&gt; &gt; &gt;; _Args = {const boost::detail::stored_edge_property&lt;long unsigned int, boost::property&lt;boost::edge_index_t, long unsigned int, boost::shared_ptr&lt;surfnav::Segment&gt; &gt; &gt;&amp;}]’: /usr/include/c++/4.9.1/bits/stl_uninitialized.h:75:53: required from ‘static _ForwardIterator std::__uninitialized_copy&lt;_TrivialValueTypes&gt;::__uninit_copy(_InputIterator, _InputIterator, _ForwardIterator) [with _InputIterator = __gnu_cxx::__normal_iterator&lt;const boost::detail::stored_edge_property&lt;long unsigned int, boost::property&lt;boost::edge_index_t, long unsigned int, boost::shared_ptr&lt;surfnav::Segment&gt; &gt; &gt;*, std::vector&lt;boost::detail::stored_edge_property&lt;long unsigned int, boost::property&lt;boost::edge_index_t, long unsigned int, boost::shared_ptr&lt;surfnav::Segment&gt; &gt; &gt;, std::allocator&lt;boost::detail::stored_edge_property&lt;long unsigned int, boost::property&lt;boost::edge_index_t, long unsigned int, boost::shared_ptr&lt;surfnav::Segment&gt; &gt; &gt; &gt; &gt; &gt;; _ForwardIterator = boost::detail::stored_edge_property&lt;long unsigned int, boost::property&lt;boost::edge_index_t, long unsigned int, boost::shared_ptr&lt;surfnav::Segment&gt; &gt; &gt;*; bool _TrivialValueTypes = false]’ /usr/include/c++/4.9.1/bits/stl_uninitialized.h:125:41: required from ‘_ForwardIterator std::uninitialized_copy(_InputIterator, _InputIterator, _ForwardIterator) [with _InputIterator = __gnu_cxx::__normal_iterator&lt;const boost::detail::stored_edge_property&lt;long unsigned int, boost::property&lt;boost::edge_index_t, long unsigned int, boost::shared_ptr&lt;surfnav::Segment&gt; &gt; &gt;*, std::vector&lt;boost::detail::stored_edge_property&lt;long unsigned int, boost::property&lt;boost::edge_index_t, long unsigned int, boost::shared_ptr&lt;surfnav::Segment&gt; &gt; &gt;, std::allocator&lt;boost::detail::stored_edge_property&lt;long unsigned int, boost::property&lt;boost::edge_index_t, long unsigned int, boost::shared_ptr&lt;surfnav::Segment&gt; &gt; &gt; &gt; &gt; &gt;; _ForwardIterator = boost::detail::stored_edge_property&lt;long unsigned int, boost::property&lt;boost::edge_index_t, long unsigned int, boost::shared_ptr&lt;surfnav::Segment&gt; &gt; &gt;*]’ /usr/include/c++/4.9.1/bits/stl_uninitialized.h:278:63: required from ‘_ForwardIterator std::__uninitialized_copy_a(_InputIterator, _InputIterator, _ForwardIterator, std::allocator&lt;_Tp&gt;&amp;) [with _InputIterator = __gnu_cxx::__normal_iterator&lt;const boost::detail::stored_edge_property&lt;long unsigned int, boost::property&lt;boost::edge_index_t, long unsigned int, boost::shared_ptr&lt;surfnav::Segment&gt; &gt; &gt;*, std::vector&lt;boost::detail::stored_edge_property&lt;long unsigned int, boost::property&lt;boost::edge_index_t, long unsigned int, boost::shared_ptr&lt;surfnav::Segment&gt; &gt; &gt;, std::allocator&lt;boost::detail::stored_edge_property&lt;long unsigned int, boost::property&lt;boost::edge_index_t, long unsigned int, boost::shared_ptr&lt;surfnav::Segment&gt; &gt; &gt; &gt; &gt; &gt;; _ForwardIterator = boost::detail::stored_edge_property&lt;long unsigned int, boost::property&lt;boost::edge_index_t, long unsigned int, boost::shared_ptr&lt;surfnav::Segment&gt; &gt; &gt;*; _Tp = boost::detail::stored_edge_property&lt;long unsigned int, boost::property&lt;boost::edge_index_t, long unsigned int, boost::shared_ptr&lt;surfnav::Segment&gt; &gt; &gt;]’ /usr/include/c++/4.9.1/bits/stl_vector.h:324:32: required from ‘std::vector&lt;_Tp, _Alloc&gt;::vector(const std::vector&lt;_Tp, _Alloc&gt;&amp;) [with _Tp = boost::detail::stored_edge_property&lt;long unsigned int, boost::property&lt;boost::edge_index_t, long unsigned int, boost::shared_ptr&lt;surfnav::Segment&gt; &gt; &gt;; _Alloc = std::allocator&lt;boost::detail::stored_edge_property&lt;long unsigned int, boost::property&lt;boost::edge_index_t, long unsigned int, boost::shared_ptr&lt;surfnav::Segment&gt; &gt; &gt; &gt;]’ /usr/include/boost/graph/detail/adjacency_list.hpp:2399:16: required from ‘void std::_Construct(_T1*, _Args&amp;&amp; ...) [with _T1 = boost::detail::adj_list_gen&lt;boost::adjacency_list&lt;boost::vecS, boost::vecS, boost::directedS, boost::property&lt;boost::vertex_index_t, long unsigned int, surfnav::Node&gt;, boost::property&lt;boost::edge_index_t, long unsigned int, boost::shared_ptr&lt;surfnav::Segment&gt; &gt;, boost::no_property, boost::vecS&gt;, boost::vecS, boost::vecS, boost::directedS, boost::property&lt;boost::vertex_index_t, long unsigned int, surfnav::Node&gt;, boost::property&lt;boost::edge_index_t, long unsigned int, boost::shared_ptr&lt;surfnav::Segment&gt; &gt;, boost::no_property, boost::vecS&gt;::config::stored_vertex; _Args = {boost::detail::adj_list_gen&lt;boost::adjacency_list&lt;boost::vecS, boost::vecS, boost::directedS, boost::property&lt;boost::vertex_index_t, long unsigned int, surfnav::Node&gt;, boost::property&lt;boost::edge_index_t, long unsigned int, boost::shared_ptr&lt;surfnav::Segment&gt; &gt;, boost::no_property, boost::vecS&gt;, boost::vecS, boost::vecS, boost::directedS, boost::property&lt;boost::vertex_index_t, long unsigned int, surfnav::Node&gt;, boost::property&lt;boost::edge_index_t, long unsigned int, boost::shared_ptr&lt;surfnav::Segment&gt; &gt;, boost::no_property, boost::vecS&gt;::config::stored_vertex&amp;}]’ /usr/include/c++/4.9.1/bits/stl_uninitialized.h:75:53: [ skipping 2 instantiation contexts, use -ftemplate-backtrace-limit=0 to disable ] /usr/include/c++/4.9.1/bits/stl_uninitialized.h:278:63: required from ‘_ForwardIterator std::__uninitialized_copy_a(_InputIterator, _InputIterator, _ForwardIterator, std::allocator&lt;_Tp&gt;&amp;) [with _InputIterator = boost::detail::adj_list_gen&lt;boost::adjacency_list&lt;boost::vecS, boost::vecS, boost::directedS, boost::property&lt;boost::vertex_index_t, long unsigned int, surfnav::Node&gt;, boost::property&lt;boost::edge_index_t, long unsigned int, boost::shared_ptr&lt;surfnav::Segment&gt; &gt;, boost::no_property, boost::vecS&gt;, boost::vecS, boost::vecS, boost::directedS, boost::property&lt;boost::vertex_index_t, long unsigned int, surfnav::Node&gt;, boost::property&lt;boost::edge_index_t, long unsigned int, boost::shared_ptr&lt;surfnav::Segment&gt; &gt;, boost::no_property, boost::vecS&gt;::config::stored_vertex*; _ForwardIterator = boost::detail::adj_list_gen&lt;boost::adjacency_list&lt;boost::vecS, boost::vecS, boost::directedS, boost::property&lt;boost::vertex_index_t, long unsigned int, surfnav::Node&gt;, boost::property&lt;boost::edge_index_t, long unsigned int, boost::shared_ptr&lt;surfnav::Segment&gt; &gt;, boost::no_property, boost::vecS&gt;, boost::vecS, boost::vecS, boost::directedS, boost::property&lt;boost::vertex_index_t, long unsigned int, surfnav::Node&gt;, boost::property&lt;boost::edge_index_t, long unsigned int, boost::shared_ptr&lt;surfnav::Segment&gt; &gt;, boost::no_property, boost::vecS&gt;::config::stored_vertex*; _Tp = boost::detail::adj_list_gen&lt;boost::adjacency_list&lt;boost::vecS, boost::vecS, boost::directedS, boost::property&lt;boost::vertex_index_t, long unsigned int, surfnav::Node&gt;, boost::property&lt;boost::edge_index_t, long unsigned int, boost::shared_ptr&lt;surfnav::Segment&gt; &gt;, boost::no_property, boost::vecS&gt;, boost::vecS, boost::vecS, boost::directedS, boost::property&lt;boost::vertex_index_t, long unsigned int, surfnav::Node&gt;, boost::property&lt;boost::edge_index_t, long unsigned int, boost::shared_ptr&lt;surfnav::Segment&gt; &gt;, boost::no_property, boost::vecS&gt;::config::stored_vertex]’ /usr/include/c++/4.9.1/bits/stl_uninitialized.h:301:67: required from ‘_ForwardIterator std::__uninitialized_move_if_noexcept_a(_InputIterator, _InputIterator, _ForwardIterator, _Allocator&amp;) [with _InputIterator = boost::detail::adj_list_gen&lt;boost::adjacency_list&lt;boost::vecS, boost::vecS, boost::directedS, boost::property&lt;boost::vertex_index_t, long unsigned int, surfnav::Node&gt;, boost::property&lt;boost::edge_index_t, long unsigned int, boost::shared_ptr&lt;surfnav::Segment&gt; &gt;, boost::no_property, boost::vecS&gt;, boost::vecS, boost::vecS, boost::directedS, boost::property&lt;boost::vertex_index_t, long unsigned int, surfnav::Node&gt;, boost::property&lt;boost::edge_index_t, long unsigned int, boost::shared_ptr&lt;surfnav::Segment&gt; &gt;, boost::no_property, boost::vecS&gt;::config::stored_vertex*; _ForwardIterator = boost::detail::adj_list_gen&lt;boost::adjacency_list&lt;boost::vecS, boost::vecS, boost::directedS, boost::property&lt;boost::vertex_index_t, long unsigned int, surfnav::Node&gt;, boost::property&lt;boost::edge_index_t, long unsigned int, boost::shared_ptr&lt;surfnav::Segment&gt; &gt;, boost::no_property, boost::vecS&gt;, boost::vecS, boost::vecS, boost::directedS, boost::property&lt;boost::vertex_index_t, long unsigned int, surfnav::Node&gt;, boost::property&lt;boost::edge_index_t, long unsigned int, boost::shared_ptr&lt;surfnav::Segment&gt; &gt;, boost::no_property, boost::vecS&gt;::config::stored_vertex*; _Allocator = std::allocator&lt;boost::detail::adj_list_gen&lt;boost::adjacency_list&lt;boost::vecS, boost::vecS, boost::directedS, boost::property&lt;boost::vertex_index_t, long unsigned int, surfnav::Node&gt;, boost::property&lt;boost::edge_index_t, long unsigned int, boost::shared_ptr&lt;surfnav::Segment&gt; &gt;, boost::no_property, boost::vecS&gt;, boost::vecS, boost::vecS, boost::directedS, boost::property&lt;boost::vertex_index_t, long unsigned int, surfnav::Node&gt;, boost::property&lt;boost::edge_index_t, long unsigned int, boost::shared_ptr&lt;surfnav::Segment&gt; &gt;, boost::no_property, boost::vecS&gt;::config::stored_vertex&gt;]’ /usr/include/c++/4.9.1/bits/vector.tcc:564:42: required from ‘void std::vector&lt;_Tp, _Alloc&gt;::_M_default_append(std::vector&lt;_Tp, _Alloc&gt;::size_type) [with _Tp = boost::detail::adj_list_gen&lt;boost::adjacency_list&lt;boost::vecS, boost::vecS, boost::directedS, boost::property&lt;boost::vertex_index_t, long unsigned int, surfnav::Node&gt;, boost::property&lt;boost::edge_index_t, long unsigned int, boost::shared_ptr&lt;surfnav::Segment&gt; &gt;, boost::no_property, boost::vecS&gt;, boost::vecS, boost::vecS, boost::directedS, boost::property&lt;boost::vertex_index_t, long unsigned int, surfnav::Node&gt;, boost::property&lt;boost::edge_index_t, long unsigned int, boost::shared_ptr&lt;surfnav::Segment&gt; &gt;, boost::no_property, boost::vecS&gt;::config::stored_vertex; _Alloc = std::allocator&lt;boost::detail::adj_list_gen&lt;boost::adjacency_list&lt;boost::vecS, boost::vecS, boost::directedS, boost::property&lt;boost::vertex_index_t, long unsigned int, surfnav::Node&gt;, boost::property&lt;boost::edge_index_t, long unsigned int, boost::shared_ptr&lt;surfnav::Segment&gt; &gt;, boost::no_property, boost::vecS&gt;, boost::vecS, boost::vecS, boost::directedS, boost::property&lt;boost::vertex_index_t, long unsigned int, surfnav::Node&gt;, boost::property&lt;boost::edge_index_t, long unsigned int, boost::shared_ptr&lt;surfnav::Segment&gt; &gt;, boost::no_property, boost::vecS&gt;::config::stored_vertex&gt;; std::vector&lt;_Tp, _Alloc&gt;::size_type = long unsigned int]’ /usr/include/c++/4.9.1/bits/stl_vector.h:676:41: required from ‘void std::vector&lt;_Tp, _Alloc&gt;::resize(std::vector&lt;_Tp, _Alloc&gt;::size_type) [with _Tp = boost::detail::adj_list_gen&lt;boost::adjacency_list&lt;boost::vecS, boost::vecS, boost::directedS, boost::property&lt;boost::vertex_index_t, long unsigned int, surfnav::Node&gt;, boost::property&lt;boost::edge_index_t, long unsigned int, boost::shared_ptr&lt;surfnav::Segment&gt; &gt;, boost::no_property, boost::vecS&gt;, boost::vecS, boost::vecS, boost::directedS, boost::property&lt;boost::vertex_index_t, long unsigned int, surfnav::Node&gt;, boost::property&lt;boost::edge_index_t, long unsigned int, boost::shared_ptr&lt;surfnav::Segment&gt; &gt;, boost::no_property, boost::vecS&gt;::config::stored_vertex; _Alloc = std::allocator&lt;boost::detail::adj_list_gen&lt;boost::adjacency_list&lt;boost::vecS, boost::vecS, boost::directedS, boost::property&lt;boost::vertex_index_t, long unsigned int, surfnav::Node&gt;, boost::property&lt;boost::edge_index_t, long unsigned int, boost::shared_ptr&lt;surfnav::Segment&gt; &gt;, boost::no_property, boost::vecS&gt;, boost::vecS, boost::vecS, boost::directedS, boost::property&lt;boost::vertex_index_t, long unsigned int, surfnav::Node&gt;, boost::property&lt;boost::edge_index_t, long unsigned int, boost::shared_ptr&lt;surfnav::Segment&gt; &gt;, boost::no_property, boost::vecS&gt;::config::stored_vertex&gt;; std::vector&lt;_Tp, _Alloc&gt;::size_type = long unsigned int]’ /usr/include/boost/graph/detail/adjacency_list.hpp:2192:7: required from ‘typename Config::vertex_descriptor boost::add_vertex(boost::vec_adj_list_impl&lt;G, C, B&gt;&amp;) [with Graph = boost::adjacency_list&lt;boost::vecS, boost::vecS, boost::directedS, boost::property&lt;boost::vertex_index_t, long unsigned int, surfnav::Node&gt;, boost::property&lt;boost::edge_index_t, long unsigned int, boost::shared_ptr&lt;surfnav::Segment&gt; &gt;, boost::no_property, boost::vecS&gt;; Config = boost::detail::adj_list_gen&lt;boost::adjacency_list&lt;boost::vecS, boost::vecS, boost::directedS, boost::property&lt;boost::vertex_index_t, long unsigned int, surfnav::Node&gt;, boost::property&lt;boost::edge_index_t, long unsigned int, boost::shared_ptr&lt;surfnav::Segment&gt; &gt;, boost::no_property, boost::vecS&gt;, boost::vecS, boost::vecS, boost::directedS, boost::property&lt;boost::vertex_index_t, long unsigned int, surfnav::Node&gt;, boost::property&lt;boost::edge_index_t, long unsigned int, boost::shared_ptr&lt;surfnav::Segment&gt; &gt;, boost::no_property, boost::vecS&gt;::config; Base = boost::directed_graph_helper&lt;boost::detail::adj_list_gen&lt;boost::adjacency_list&lt;boost::vecS, boost::vecS, boost::directedS, boost::property&lt;boost::vertex_index_t, long unsigned int, surfnav::Node&gt;, boost::property&lt;boost::edge_index_t, long unsigned int, boost::shared_ptr&lt;surfnav::Segment&gt; &gt;, boost::no_property, boost::vecS&gt;, boost::vecS, boost::vecS, boost::directedS, boost::property&lt;boost::vertex_index_t, long unsigned int, surfnav::Node&gt;, boost::property&lt;boost::edge_index_t, long unsigned int, boost::shared_ptr&lt;surfnav::Segment&gt; &gt;, boost::no_property, boost::vecS&gt;::config&gt;; typename Config::vertex_descriptor = long unsigned int]’ /home/v01d/coding/ros/src/surfnav/src/lib/map.cpp:13:36: required from here /usr/include/c++/4.9.1/bits/stl_construct.h:75:7: error: use of deleted function ‘boost::detail::stored_edge_property&lt;long unsigned int, boost::property&lt;boost::edge_index_t, long unsigned int, boost::shared_ptr&lt;surfnav::Segment&gt; &gt; &gt;::stored_edge_property(const boost::detail::stored_edge_property&lt;long unsigned int, boost::property&lt;boost::edge_index_t, long unsigned int, boost::shared_ptr&lt;surfnav::Segment&gt; &gt; &gt;&amp;)’ { ::new(static_cast&lt;void*&gt;(__p)) _T1(std::forward&lt;_Args&gt;(__args)...); } ^ </pre> </description> <category>Ticket</category> </item> </channel> </rss>