Boost C++ Libraries: Ticket #10531: Upgrade to boost 1.56.0 breaks compilation of boost::polygon code https://svn.boost.org/trac10/ticket/10531 <p> The following code compiled until 1.55.0. It stopped doing so from 1.56.0 on. I didn't mark the component as boost::polygon since it appears it wasn't changed and might be a problem related to something else. </p> <pre class="wiki">#include &lt;vector&gt; #include &lt;boost/polygon/polygon.hpp&gt; int main() { typedef boost::polygon::polygon_data&lt;int&gt; Polygon; typedef boost::polygon::polygon_set_data&lt;int&gt; PolygonSet; PolygonSet ps; std::vector&lt;Polygon&gt; output; ps.get(output); } </pre><p> My output (with gcc 4.8.3) is: </p> <pre class="wiki">In file included from /usr/include/boost/polygon/polygon.hpp:15:0, from t.cpp:3: /usr/include/boost/polygon/point_data.hpp: In instantiation of 'boost::polygon::point_data&lt;T&gt;&amp; boost::polygon::point_data&lt;T&gt;::operator=(const PointType&amp;) [with PointType = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;; T = int]': /usr/include/boost/polygon/point_data.hpp:50:11: required from 'boost::polygon::point_data&lt;T&gt;::point_data(const PointType&amp;) [with PointType = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;; T = int]' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/bits/stl_pair.h:125:39: required from 'constexpr std::pair&lt;_T1, _T2&gt;::pair(const std::pair&lt;_U1, _U2&gt;&amp;) [with _U1 = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;; _U2 = int; &lt;template-parameter-2-3&gt; = void; _T1 = boost::polygon::point_data&lt;int&gt;; _T2 = boost::polygon::point_data&lt;int&gt;]' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/type_traits:1305:35: required by substitution of 'template&lt;class _From1, class _To1&gt; static decltype ((__test_aux&lt;_To1&gt;(declval&lt;_From1&gt;()), std::__sfinae_types::__one())) std::__is_convertible_helper&lt;_From, _To, false&gt;::__test(int) [with _From1 = _From1; _To1 = _To1; _From = const std::pair&lt;std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, int&gt;&amp;; _To = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;] [with _From1 = const std::pair&lt;std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, int&gt;&amp;; _To1 = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;]' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/type_traits:1312:50: required from 'constexpr const bool std::__is_convertible_helper&lt;const std::pair&lt;std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, int&gt;&amp;, std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, false&gt;::value' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/type_traits:1317:12: required from 'struct std::is_convertible&lt;const std::pair&lt;std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, int&gt;&amp;, std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt; &gt;' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/type_traits:116:12: [ skipping 19 instantiation contexts, use -ftemplate-backtrace-limit=0 to disable ] /usr/include/boost/polygon/detail/polygon_arbitrary_formation.hpp:1682:11: required from 'iT boost::polygon::polygon_arbitrary_formation&lt;Unit&gt;::processEvent_(cT&amp;, iT, iT) [with cT = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; iT = __gnu_cxx::__normal_iterator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge*, std::vector&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge, std::allocator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge&gt; &gt; &gt;; Unit = int]' /usr/include/boost/polygon/detail/polygon_arbitrary_formation.hpp:1361:64: required from 'void boost::polygon::polygon_arbitrary_formation&lt;Unit&gt;::scan(cT&amp;, iT, iT) [with cT = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; iT = __gnu_cxx::__normal_iterator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge*, std::vector&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge, std::allocator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge&gt; &gt; &gt;; Unit = int]' /usr/include/boost/polygon/polygon_set_data.hpp:798:7: required from 'void boost::polygon::polygon_set_data&lt;T&gt;::get_fracture(output_container&amp;, bool, concept_type) const [with output_container = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; concept_type = boost::polygon::polygon_concept; T = int]' /usr/include/boost/polygon/polygon_set_data.hpp:781:37: required from 'void boost::polygon::polygon_set_data&lt;T&gt;::get_dispatch(output_container&amp;, boost::polygon::polygon_concept) const [with output_container = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; T = int]' /usr/include/boost/polygon/polygon_set_data.hpp:233:100: required from 'void boost::polygon::polygon_set_data&lt;T&gt;::get(output_container&amp;) const [with output_container = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; T = int]' t.cpp:11:15: required from here /usr/include/boost/polygon/point_data.hpp:55:23: error: no matching function for call to 'assign(boost::polygon::point_data&lt;int&gt;&amp;, const std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;&amp;)' assign(*this, that); ^ /usr/include/boost/polygon/point_data.hpp:55:23: note: candidates are: In file included from /usr/include/boost/polygon/point_data.hpp:16:0, from /usr/include/boost/polygon/polygon.hpp:15, from t.cpp:3: /usr/include/boost/polygon/point_concept.hpp:167:20: note: template&lt;class PointType1, class PointType2&gt; typename boost::enable_if&lt;typename boost::polygon::gtl_and_3&lt;boost::polygon::y_pt_assign, typename boost::polygon::is_mutable_point_concept&lt;typename boost::polygon::geometry_concept&lt;T&gt;::type&gt;::type, typename boost::polygon::is_point_concept&lt;typename boost::polygon::geometry_concept&lt;PointType2&gt;::type&gt;::type&gt;::type, PointType1&gt;::type&amp; boost::polygon::assign(PointType1&amp;, const PointType2&amp;) PointType1&gt;::type&amp; assign(PointType1&amp; lvalue, const PointType2&amp; rvalue) { ^ /usr/include/boost/polygon/point_concept.hpp:167:20: note: template argument deduction/substitution failed: /usr/include/boost/polygon/point_concept.hpp: In substitution of 'template&lt;class PointType1, class PointType2&gt; typename boost::enable_if&lt;typename boost::polygon::gtl_and_3&lt;boost::polygon::y_pt_assign, typename boost::polygon::is_mutable_point_concept&lt;typename boost::polygon::geometry_concept&lt;T&gt;::type&gt;::type, typename boost::polygon::is_point_concept&lt;typename boost::polygon::geometry_concept&lt;PointType2&gt;::type&gt;::type&gt;::type, PointType1&gt;::type&amp; boost::polygon::assign(PointType1&amp;, const PointType2&amp;) [with PointType1 = boost::polygon::point_data&lt;int&gt;; PointType2 = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;]': /usr/include/boost/polygon/point_data.hpp:55:23: required from 'boost::polygon::point_data&lt;T&gt;&amp; boost::polygon::point_data&lt;T&gt;::operator=(const PointType&amp;) [with PointType = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;; T = int]' /usr/include/boost/polygon/point_data.hpp:50:11: required from 'boost::polygon::point_data&lt;T&gt;::point_data(const PointType&amp;) [with PointType = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;; T = int]' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/bits/stl_pair.h:125:39: required from 'constexpr std::pair&lt;_T1, _T2&gt;::pair(const std::pair&lt;_U1, _U2&gt;&amp;) [with _U1 = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;; _U2 = int; &lt;template-parameter-2-3&gt; = void; _T1 = boost::polygon::point_data&lt;int&gt;; _T2 = boost::polygon::point_data&lt;int&gt;]' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/type_traits:1305:35: required by substitution of 'template&lt;class _From1, class _To1&gt; static decltype ((__test_aux&lt;_To1&gt;(declval&lt;_From1&gt;()), std::__sfinae_types::__one())) std::__is_convertible_helper&lt;_From, _To, false&gt;::__test(int) [with _From1 = _From1; _To1 = _To1; _From = const std::pair&lt;std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, int&gt;&amp;; _To = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;] [with _From1 = const std::pair&lt;std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, int&gt;&amp;; _To1 = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;]' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/type_traits:1312:50: required from 'constexpr const bool std::__is_convertible_helper&lt;const std::pair&lt;std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, int&gt;&amp;, std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, false&gt;::value' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/type_traits:1317:12: [ skipping 20 instantiation contexts, use -ftemplate-backtrace-limit=0 to disable ] /usr/include/boost/polygon/detail/polygon_arbitrary_formation.hpp:1682:11: required from 'iT boost::polygon::polygon_arbitrary_formation&lt;Unit&gt;::processEvent_(cT&amp;, iT, iT) [with cT = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; iT = __gnu_cxx::__normal_iterator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge*, std::vector&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge, std::allocator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge&gt; &gt; &gt;; Unit = int]' /usr/include/boost/polygon/detail/polygon_arbitrary_formation.hpp:1361:64: required from 'void boost::polygon::polygon_arbitrary_formation&lt;Unit&gt;::scan(cT&amp;, iT, iT) [with cT = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; iT = __gnu_cxx::__normal_iterator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge*, std::vector&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge, std::allocator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge&gt; &gt; &gt;; Unit = int]' /usr/include/boost/polygon/polygon_set_data.hpp:798:7: required from 'void boost::polygon::polygon_set_data&lt;T&gt;::get_fracture(output_container&amp;, bool, concept_type) const [with output_container = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; concept_type = boost::polygon::polygon_concept; T = int]' /usr/include/boost/polygon/polygon_set_data.hpp:781:37: required from 'void boost::polygon::polygon_set_data&lt;T&gt;::get_dispatch(output_container&amp;, boost::polygon::polygon_concept) const [with output_container = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; T = int]' /usr/include/boost/polygon/polygon_set_data.hpp:233:100: required from 'void boost::polygon::polygon_set_data&lt;T&gt;::get(output_container&amp;) const [with output_container = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; T = int]' t.cpp:11:15: required from here /usr/include/boost/polygon/point_concept.hpp:167:20: error: no type named 'type' in 'struct boost::enable_if&lt;mpl_::bool_&lt;false&gt;, boost::polygon::point_data&lt;int&gt; &gt;' In file included from /usr/include/boost/polygon/polygon_set_data.hpp:1001:0, from /usr/include/boost/polygon/polygon.hpp:81, from t.cpp:3: /usr/include/boost/polygon/point_data.hpp: In instantiation of 'boost::polygon::point_data&lt;T&gt;&amp; boost::polygon::point_data&lt;T&gt;::operator=(const PointType&amp;) [with PointType = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;; T = int]': /usr/include/boost/polygon/point_data.hpp:50:11: required from 'boost::polygon::point_data&lt;T&gt;::point_data(const PointType&amp;) [with PointType = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;; T = int]' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/bits/stl_pair.h:125:39: required from 'constexpr std::pair&lt;_T1, _T2&gt;::pair(const std::pair&lt;_U1, _U2&gt;&amp;) [with _U1 = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;; _U2 = int; &lt;template-parameter-2-3&gt; = void; _T1 = boost::polygon::point_data&lt;int&gt;; _T2 = boost::polygon::point_data&lt;int&gt;]' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/type_traits:1305:35: required by substitution of 'template&lt;class _From1, class _To1&gt; static decltype ((__test_aux&lt;_To1&gt;(declval&lt;_From1&gt;()), std::__sfinae_types::__one())) std::__is_convertible_helper&lt;_From, _To, false&gt;::__test(int) [with _From1 = _From1; _To1 = _To1; _From = const std::pair&lt;std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, int&gt;&amp;; _To = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;] [with _From1 = const std::pair&lt;std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, int&gt;&amp;; _To1 = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;]' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/type_traits:1312:50: required from 'constexpr const bool std::__is_convertible_helper&lt;const std::pair&lt;std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, int&gt;&amp;, std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, false&gt;::value' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/type_traits:1317:12: required from 'struct std::is_convertible&lt;const std::pair&lt;std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, int&gt;&amp;, std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt; &gt;' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/type_traits:116:12: [ skipping 19 instantiation contexts, use -ftemplate-backtrace-limit=0 to disable ] /usr/include/boost/polygon/detail/polygon_arbitrary_formation.hpp:1682:11: required from 'iT boost::polygon::polygon_arbitrary_formation&lt;Unit&gt;::processEvent_(cT&amp;, iT, iT) [with cT = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; iT = __gnu_cxx::__normal_iterator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge*, std::vector&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge, std::allocator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge&gt; &gt; &gt;; Unit = int]' /usr/include/boost/polygon/detail/polygon_arbitrary_formation.hpp:1361:64: required from 'void boost::polygon::polygon_arbitrary_formation&lt;Unit&gt;::scan(cT&amp;, iT, iT) [with cT = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; iT = __gnu_cxx::__normal_iterator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge*, std::vector&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge, std::allocator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge&gt; &gt; &gt;; Unit = int]' /usr/include/boost/polygon/polygon_set_data.hpp:798:7: required from 'void boost::polygon::polygon_set_data&lt;T&gt;::get_fracture(output_container&amp;, bool, concept_type) const [with output_container = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; concept_type = boost::polygon::polygon_concept; T = int]' /usr/include/boost/polygon/polygon_set_data.hpp:781:37: required from 'void boost::polygon::polygon_set_data&lt;T&gt;::get_dispatch(output_container&amp;, boost::polygon::polygon_concept) const [with output_container = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; T = int]' /usr/include/boost/polygon/polygon_set_data.hpp:233:100: required from 'void boost::polygon::polygon_set_data&lt;T&gt;::get(output_container&amp;) const [with output_container = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; T = int]' t.cpp:11:15: required from here /usr/include/boost/polygon/polygon_set_concept.hpp:51:3: note: template&lt;class polygon_set_type_1, class polygon_set_type_2&gt; typename boost::enable_if&lt;typename boost::polygon::gtl_and&lt;typename boost::polygon::is_mutable_polygon_set_type&lt;T&gt;::type, typename boost::polygon::is_any_polygon_set_type&lt;polygon_set_type_2&gt;::type&gt;::type, polygon_set_type_1&gt;::type&amp; boost::polygon::assign(polygon_set_type_1&amp;, const polygon_set_type_2&amp;) assign(polygon_set_type_1&amp; lvalue, const polygon_set_type_2&amp; rvalue) { ^ /usr/include/boost/polygon/polygon_set_concept.hpp:51:3: note: template argument deduction/substitution failed: /usr/include/boost/polygon/polygon_set_concept.hpp: In substitution of 'template&lt;class polygon_set_type_1, class polygon_set_type_2&gt; typename boost::enable_if&lt;typename boost::polygon::gtl_and&lt;typename boost::polygon::is_mutable_polygon_set_type&lt;T&gt;::type, typename boost::polygon::is_any_polygon_set_type&lt;polygon_set_type_2&gt;::type&gt;::type, polygon_set_type_1&gt;::type&amp; boost::polygon::assign(polygon_set_type_1&amp;, const polygon_set_type_2&amp;) [with polygon_set_type_1 = boost::polygon::point_data&lt;int&gt;; polygon_set_type_2 = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;]': /usr/include/boost/polygon/point_data.hpp:55:23: required from 'boost::polygon::point_data&lt;T&gt;&amp; boost::polygon::point_data&lt;T&gt;::operator=(const PointType&amp;) [with PointType = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;; T = int]' /usr/include/boost/polygon/point_data.hpp:50:11: required from 'boost::polygon::point_data&lt;T&gt;::point_data(const PointType&amp;) [with PointType = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;; T = int]' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/bits/stl_pair.h:125:39: required from 'constexpr std::pair&lt;_T1, _T2&gt;::pair(const std::pair&lt;_U1, _U2&gt;&amp;) [with _U1 = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;; _U2 = int; &lt;template-parameter-2-3&gt; = void; _T1 = boost::polygon::point_data&lt;int&gt;; _T2 = boost::polygon::point_data&lt;int&gt;]' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/type_traits:1305:35: required by substitution of 'template&lt;class _From1, class _To1&gt; static decltype ((__test_aux&lt;_To1&gt;(declval&lt;_From1&gt;()), std::__sfinae_types::__one())) std::__is_convertible_helper&lt;_From, _To, false&gt;::__test(int) [with _From1 = _From1; _To1 = _To1; _From = const std::pair&lt;std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, int&gt;&amp;; _To = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;] [with _From1 = const std::pair&lt;std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, int&gt;&amp;; _To1 = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;]' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/type_traits:1312:50: required from 'constexpr const bool std::__is_convertible_helper&lt;const std::pair&lt;std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, int&gt;&amp;, std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, false&gt;::value' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/type_traits:1317:12: [ skipping 20 instantiation contexts, use -ftemplate-backtrace-limit=0 to disable ] /usr/include/boost/polygon/detail/polygon_arbitrary_formation.hpp:1682:11: required from 'iT boost::polygon::polygon_arbitrary_formation&lt;Unit&gt;::processEvent_(cT&amp;, iT, iT) [with cT = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; iT = __gnu_cxx::__normal_iterator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge*, std::vector&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge, std::allocator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge&gt; &gt; &gt;; Unit = int]' /usr/include/boost/polygon/detail/polygon_arbitrary_formation.hpp:1361:64: required from 'void boost::polygon::polygon_arbitrary_formation&lt;Unit&gt;::scan(cT&amp;, iT, iT) [with cT = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; iT = __gnu_cxx::__normal_iterator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge*, std::vector&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge, std::allocator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge&gt; &gt; &gt;; Unit = int]' /usr/include/boost/polygon/polygon_set_data.hpp:798:7: required from 'void boost::polygon::polygon_set_data&lt;T&gt;::get_fracture(output_container&amp;, bool, concept_type) const [with output_container = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; concept_type = boost::polygon::polygon_concept; T = int]' /usr/include/boost/polygon/polygon_set_data.hpp:781:37: required from 'void boost::polygon::polygon_set_data&lt;T&gt;::get_dispatch(output_container&amp;, boost::polygon::polygon_concept) const [with output_container = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; T = int]' /usr/include/boost/polygon/polygon_set_data.hpp:233:100: required from 'void boost::polygon::polygon_set_data&lt;T&gt;::get(output_container&amp;) const [with output_container = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; T = int]' t.cpp:11:15: required from here /usr/include/boost/polygon/polygon_set_concept.hpp:51:3: error: no type named 'type' in 'struct boost::enable_if&lt;mpl_::bool_&lt;false&gt;, boost::polygon::point_data&lt;int&gt; &gt;' In file included from /usr/include/boost/polygon/polygon.hpp:76:0, from t.cpp:3: /usr/include/boost/polygon/point_data.hpp: In instantiation of 'boost::polygon::point_data&lt;T&gt;&amp; boost::polygon::point_data&lt;T&gt;::operator=(const PointType&amp;) [with PointType = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;; T = int]': /usr/include/boost/polygon/point_data.hpp:50:11: required from 'boost::polygon::point_data&lt;T&gt;::point_data(const PointType&amp;) [with PointType = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;; T = int]' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/bits/stl_pair.h:125:39: required from 'constexpr std::pair&lt;_T1, _T2&gt;::pair(const std::pair&lt;_U1, _U2&gt;&amp;) [with _U1 = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;; _U2 = int; &lt;template-parameter-2-3&gt; = void; _T1 = boost::polygon::point_data&lt;int&gt;; _T2 = boost::polygon::point_data&lt;int&gt;]' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/type_traits:1305:35: required by substitution of 'template&lt;class _From1, class _To1&gt; static decltype ((__test_aux&lt;_To1&gt;(declval&lt;_From1&gt;()), std::__sfinae_types::__one())) std::__is_convertible_helper&lt;_From, _To, false&gt;::__test(int) [with _From1 = _From1; _To1 = _To1; _From = const std::pair&lt;std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, int&gt;&amp;; _To = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;] [with _From1 = const std::pair&lt;std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, int&gt;&amp;; _To1 = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;]' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/type_traits:1312:50: required from 'constexpr const bool std::__is_convertible_helper&lt;const std::pair&lt;std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, int&gt;&amp;, std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, false&gt;::value' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/type_traits:1317:12: required from 'struct std::is_convertible&lt;const std::pair&lt;std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, int&gt;&amp;, std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt; &gt;' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/type_traits:116:12: [ skipping 19 instantiation contexts, use -ftemplate-backtrace-limit=0 to disable ] /usr/include/boost/polygon/detail/polygon_arbitrary_formation.hpp:1682:11: required from 'iT boost::polygon::polygon_arbitrary_formation&lt;Unit&gt;::processEvent_(cT&amp;, iT, iT) [with cT = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; iT = __gnu_cxx::__normal_iterator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge*, std::vector&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge, std::allocator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge&gt; &gt; &gt;; Unit = int]' /usr/include/boost/polygon/detail/polygon_arbitrary_formation.hpp:1361:64: required from 'void boost::polygon::polygon_arbitrary_formation&lt;Unit&gt;::scan(cT&amp;, iT, iT) [with cT = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; iT = __gnu_cxx::__normal_iterator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge*, std::vector&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge, std::allocator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge&gt; &gt; &gt;; Unit = int]' /usr/include/boost/polygon/polygon_set_data.hpp:798:7: required from 'void boost::polygon::polygon_set_data&lt;T&gt;::get_fracture(output_container&amp;, bool, concept_type) const [with output_container = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; concept_type = boost::polygon::polygon_concept; T = int]' /usr/include/boost/polygon/polygon_set_data.hpp:781:37: required from 'void boost::polygon::polygon_set_data&lt;T&gt;::get_dispatch(output_container&amp;, boost::polygon::polygon_concept) const [with output_container = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; T = int]' /usr/include/boost/polygon/polygon_set_data.hpp:233:100: required from 'void boost::polygon::polygon_set_data&lt;T&gt;::get(output_container&amp;) const [with output_container = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; T = int]' t.cpp:11:15: required from here /usr/include/boost/polygon/polygon_45_set_concept.hpp:51:3: note: template&lt;class polygon_set_type_1, class polygon_set_type_2&gt; typename boost::enable_if&lt;typename boost::polygon::gtl_and&lt;typename boost::polygon::gtl_if&lt;typename boost::polygon::is_mutable_polygon_45_set_type&lt;T&gt;::type&gt;::type, typename boost::polygon::gtl_if&lt;typename boost::polygon::is_polygon_45_or_90_set_type&lt;polygon_set_type_2&gt;::type&gt;::type&gt;::type, polygon_set_type_1&gt;::type&amp; boost::polygon::assign(polygon_set_type_1&amp;, const polygon_set_type_2&amp;) assign(polygon_set_type_1&amp; lvalue, const polygon_set_type_2&amp; rvalue) { ^ /usr/include/boost/polygon/polygon_45_set_concept.hpp:51:3: note: template argument deduction/substitution failed: /usr/include/boost/polygon/polygon_45_set_concept.hpp: In substitution of 'template&lt;class polygon_set_type_1, class polygon_set_type_2&gt; typename boost::enable_if&lt;typename boost::polygon::gtl_and&lt;typename boost::polygon::gtl_if&lt;typename boost::polygon::is_mutable_polygon_45_set_type&lt;T&gt;::type&gt;::type, typename boost::polygon::gtl_if&lt;typename boost::polygon::is_polygon_45_or_90_set_type&lt;polygon_set_type_2&gt;::type&gt;::type&gt;::type, polygon_set_type_1&gt;::type&amp; boost::polygon::assign(polygon_set_type_1&amp;, const polygon_set_type_2&amp;) [with polygon_set_type_1 = boost::polygon::point_data&lt;int&gt;; polygon_set_type_2 = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;]': /usr/include/boost/polygon/point_data.hpp:55:23: required from 'boost::polygon::point_data&lt;T&gt;&amp; boost::polygon::point_data&lt;T&gt;::operator=(const PointType&amp;) [with PointType = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;; T = int]' /usr/include/boost/polygon/point_data.hpp:50:11: required from 'boost::polygon::point_data&lt;T&gt;::point_data(const PointType&amp;) [with PointType = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;; T = int]' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/bits/stl_pair.h:125:39: required from 'constexpr std::pair&lt;_T1, _T2&gt;::pair(const std::pair&lt;_U1, _U2&gt;&amp;) [with _U1 = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;; _U2 = int; &lt;template-parameter-2-3&gt; = void; _T1 = boost::polygon::point_data&lt;int&gt;; _T2 = boost::polygon::point_data&lt;int&gt;]' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/type_traits:1305:35: required by substitution of 'template&lt;class _From1, class _To1&gt; static decltype ((__test_aux&lt;_To1&gt;(declval&lt;_From1&gt;()), std::__sfinae_types::__one())) std::__is_convertible_helper&lt;_From, _To, false&gt;::__test(int) [with _From1 = _From1; _To1 = _To1; _From = const std::pair&lt;std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, int&gt;&amp;; _To = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;] [with _From1 = const std::pair&lt;std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, int&gt;&amp;; _To1 = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;]' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/type_traits:1312:50: required from 'constexpr const bool std::__is_convertible_helper&lt;const std::pair&lt;std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, int&gt;&amp;, std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, false&gt;::value' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/type_traits:1317:12: [ skipping 20 instantiation contexts, use -ftemplate-backtrace-limit=0 to disable ] /usr/include/boost/polygon/detail/polygon_arbitrary_formation.hpp:1682:11: required from 'iT boost::polygon::polygon_arbitrary_formation&lt;Unit&gt;::processEvent_(cT&amp;, iT, iT) [with cT = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; iT = __gnu_cxx::__normal_iterator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge*, std::vector&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge, std::allocator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge&gt; &gt; &gt;; Unit = int]' /usr/include/boost/polygon/detail/polygon_arbitrary_formation.hpp:1361:64: required from 'void boost::polygon::polygon_arbitrary_formation&lt;Unit&gt;::scan(cT&amp;, iT, iT) [with cT = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; iT = __gnu_cxx::__normal_iterator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge*, std::vector&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge, std::allocator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge&gt; &gt; &gt;; Unit = int]' /usr/include/boost/polygon/polygon_set_data.hpp:798:7: required from 'void boost::polygon::polygon_set_data&lt;T&gt;::get_fracture(output_container&amp;, bool, concept_type) const [with output_container = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; concept_type = boost::polygon::polygon_concept; T = int]' /usr/include/boost/polygon/polygon_set_data.hpp:781:37: required from 'void boost::polygon::polygon_set_data&lt;T&gt;::get_dispatch(output_container&amp;, boost::polygon::polygon_concept) const [with output_container = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; T = int]' /usr/include/boost/polygon/polygon_set_data.hpp:233:100: required from 'void boost::polygon::polygon_set_data&lt;T&gt;::get(output_container&amp;) const [with output_container = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; T = int]' t.cpp:11:15: required from here /usr/include/boost/polygon/polygon_45_set_concept.hpp:51:3: error: no type named 'type' in 'struct boost::polygon::gtl_if&lt;boost::polygon::gtl_no&gt;' In file included from /usr/include/boost/polygon/polygon.hpp:67:0, from t.cpp:3: /usr/include/boost/polygon/point_data.hpp: In instantiation of 'boost::polygon::point_data&lt;T&gt;&amp; boost::polygon::point_data&lt;T&gt;::operator=(const PointType&amp;) [with PointType = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;; T = int]': /usr/include/boost/polygon/point_data.hpp:50:11: required from 'boost::polygon::point_data&lt;T&gt;::point_data(const PointType&amp;) [with PointType = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;; T = int]' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/bits/stl_pair.h:125:39: required from 'constexpr std::pair&lt;_T1, _T2&gt;::pair(const std::pair&lt;_U1, _U2&gt;&amp;) [with _U1 = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;; _U2 = int; &lt;template-parameter-2-3&gt; = void; _T1 = boost::polygon::point_data&lt;int&gt;; _T2 = boost::polygon::point_data&lt;int&gt;]' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/type_traits:1305:35: required by substitution of 'template&lt;class _From1, class _To1&gt; static decltype ((__test_aux&lt;_To1&gt;(declval&lt;_From1&gt;()), std::__sfinae_types::__one())) std::__is_convertible_helper&lt;_From, _To, false&gt;::__test(int) [with _From1 = _From1; _To1 = _To1; _From = const std::pair&lt;std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, int&gt;&amp;; _To = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;] [with _From1 = const std::pair&lt;std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, int&gt;&amp;; _To1 = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;]' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/type_traits:1312:50: required from 'constexpr const bool std::__is_convertible_helper&lt;const std::pair&lt;std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, int&gt;&amp;, std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, false&gt;::value' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/type_traits:1317:12: required from 'struct std::is_convertible&lt;const std::pair&lt;std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, int&gt;&amp;, std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt; &gt;' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/type_traits:116:12: [ skipping 19 instantiation contexts, use -ftemplate-backtrace-limit=0 to disable ] /usr/include/boost/polygon/detail/polygon_arbitrary_formation.hpp:1682:11: required from 'iT boost::polygon::polygon_arbitrary_formation&lt;Unit&gt;::processEvent_(cT&amp;, iT, iT) [with cT = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; iT = __gnu_cxx::__normal_iterator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge*, std::vector&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge, std::allocator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge&gt; &gt; &gt;; Unit = int]' /usr/include/boost/polygon/detail/polygon_arbitrary_formation.hpp:1361:64: required from 'void boost::polygon::polygon_arbitrary_formation&lt;Unit&gt;::scan(cT&amp;, iT, iT) [with cT = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; iT = __gnu_cxx::__normal_iterator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge*, std::vector&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge, std::allocator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge&gt; &gt; &gt;; Unit = int]' /usr/include/boost/polygon/polygon_set_data.hpp:798:7: required from 'void boost::polygon::polygon_set_data&lt;T&gt;::get_fracture(output_container&amp;, bool, concept_type) const [with output_container = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; concept_type = boost::polygon::polygon_concept; T = int]' /usr/include/boost/polygon/polygon_set_data.hpp:781:37: required from 'void boost::polygon::polygon_set_data&lt;T&gt;::get_dispatch(output_container&amp;, boost::polygon::polygon_concept) const [with output_container = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; T = int]' /usr/include/boost/polygon/polygon_set_data.hpp:233:100: required from 'void boost::polygon::polygon_set_data&lt;T&gt;::get(output_container&amp;) const [with output_container = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; T = int]' t.cpp:11:15: required from here /usr/include/boost/polygon/polygon_90_set_concept.hpp:49:3: note: template&lt;class polygon_set_type_1, class polygon_set_type_2&gt; typename boost::enable_if&lt;typename boost::polygon::gtl_and&lt;typename boost::polygon::is_mutable_polygon_90_set_type&lt;T&gt;::type, typename boost::polygon::is_polygon_90_set_type&lt;polygon_set_type_2&gt;::type&gt;::type, polygon_set_type_1&gt;::type&amp; boost::polygon::assign(polygon_set_type_1&amp;, const polygon_set_type_2&amp;) assign(polygon_set_type_1&amp; lvalue, const polygon_set_type_2&amp; rvalue) { ^ /usr/include/boost/polygon/polygon_90_set_concept.hpp:49:3: note: template argument deduction/substitution failed: /usr/include/boost/polygon/polygon_90_set_concept.hpp: In substitution of 'template&lt;class polygon_set_type_1, class polygon_set_type_2&gt; typename boost::enable_if&lt;typename boost::polygon::gtl_and&lt;typename boost::polygon::is_mutable_polygon_90_set_type&lt;T&gt;::type, typename boost::polygon::is_polygon_90_set_type&lt;polygon_set_type_2&gt;::type&gt;::type, polygon_set_type_1&gt;::type&amp; boost::polygon::assign(polygon_set_type_1&amp;, const polygon_set_type_2&amp;) [with polygon_set_type_1 = boost::polygon::point_data&lt;int&gt;; polygon_set_type_2 = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;]': /usr/include/boost/polygon/point_data.hpp:55:23: required from 'boost::polygon::point_data&lt;T&gt;&amp; boost::polygon::point_data&lt;T&gt;::operator=(const PointType&amp;) [with PointType = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;; T = int]' /usr/include/boost/polygon/point_data.hpp:50:11: required from 'boost::polygon::point_data&lt;T&gt;::point_data(const PointType&amp;) [with PointType = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;; T = int]' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/bits/stl_pair.h:125:39: required from 'constexpr std::pair&lt;_T1, _T2&gt;::pair(const std::pair&lt;_U1, _U2&gt;&amp;) [with _U1 = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;; _U2 = int; &lt;template-parameter-2-3&gt; = void; _T1 = boost::polygon::point_data&lt;int&gt;; _T2 = boost::polygon::point_data&lt;int&gt;]' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/type_traits:1305:35: required by substitution of 'template&lt;class _From1, class _To1&gt; static decltype ((__test_aux&lt;_To1&gt;(declval&lt;_From1&gt;()), std::__sfinae_types::__one())) std::__is_convertible_helper&lt;_From, _To, false&gt;::__test(int) [with _From1 = _From1; _To1 = _To1; _From = const std::pair&lt;std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, int&gt;&amp;; _To = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;] [with _From1 = const std::pair&lt;std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, int&gt;&amp;; _To1 = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;]' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/type_traits:1312:50: required from 'constexpr const bool std::__is_convertible_helper&lt;const std::pair&lt;std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, int&gt;&amp;, std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, false&gt;::value' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/type_traits:1317:12: [ skipping 20 instantiation contexts, use -ftemplate-backtrace-limit=0 to disable ] /usr/include/boost/polygon/detail/polygon_arbitrary_formation.hpp:1682:11: required from 'iT boost::polygon::polygon_arbitrary_formation&lt;Unit&gt;::processEvent_(cT&amp;, iT, iT) [with cT = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; iT = __gnu_cxx::__normal_iterator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge*, std::vector&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge, std::allocator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge&gt; &gt; &gt;; Unit = int]' /usr/include/boost/polygon/detail/polygon_arbitrary_formation.hpp:1361:64: required from 'void boost::polygon::polygon_arbitrary_formation&lt;Unit&gt;::scan(cT&amp;, iT, iT) [with cT = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; iT = __gnu_cxx::__normal_iterator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge*, std::vector&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge, std::allocator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge&gt; &gt; &gt;; Unit = int]' /usr/include/boost/polygon/polygon_set_data.hpp:798:7: required from 'void boost::polygon::polygon_set_data&lt;T&gt;::get_fracture(output_container&amp;, bool, concept_type) const [with output_container = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; concept_type = boost::polygon::polygon_concept; T = int]' /usr/include/boost/polygon/polygon_set_data.hpp:781:37: required from 'void boost::polygon::polygon_set_data&lt;T&gt;::get_dispatch(output_container&amp;, boost::polygon::polygon_concept) const [with output_container = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; T = int]' /usr/include/boost/polygon/polygon_set_data.hpp:233:100: required from 'void boost::polygon::polygon_set_data&lt;T&gt;::get(output_container&amp;) const [with output_container = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; T = int]' t.cpp:11:15: required from here /usr/include/boost/polygon/polygon_90_set_concept.hpp:49:3: error: no type named 'type' in 'struct boost::enable_if&lt;mpl_::bool_&lt;false&gt;, boost::polygon::point_data&lt;int&gt; &gt;' In file included from /usr/include/boost/polygon/polygon.hpp:47:0, from t.cpp:3: /usr/include/boost/polygon/point_data.hpp: In instantiation of 'boost::polygon::point_data&lt;T&gt;&amp; boost::polygon::point_data&lt;T&gt;::operator=(const PointType&amp;) [with PointType = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;; T = int]': /usr/include/boost/polygon/point_data.hpp:50:11: required from 'boost::polygon::point_data&lt;T&gt;::point_data(const PointType&amp;) [with PointType = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;; T = int]' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/bits/stl_pair.h:125:39: required from 'constexpr std::pair&lt;_T1, _T2&gt;::pair(const std::pair&lt;_U1, _U2&gt;&amp;) [with _U1 = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;; _U2 = int; &lt;template-parameter-2-3&gt; = void; _T1 = boost::polygon::point_data&lt;int&gt;; _T2 = boost::polygon::point_data&lt;int&gt;]' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/type_traits:1305:35: required by substitution of 'template&lt;class _From1, class _To1&gt; static decltype ((__test_aux&lt;_To1&gt;(declval&lt;_From1&gt;()), std::__sfinae_types::__one())) std::__is_convertible_helper&lt;_From, _To, false&gt;::__test(int) [with _From1 = _From1; _To1 = _To1; _From = const std::pair&lt;std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, int&gt;&amp;; _To = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;] [with _From1 = const std::pair&lt;std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, int&gt;&amp;; _To1 = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;]' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/type_traits:1312:50: required from 'constexpr const bool std::__is_convertible_helper&lt;const std::pair&lt;std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, int&gt;&amp;, std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, false&gt;::value' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/type_traits:1317:12: required from 'struct std::is_convertible&lt;const std::pair&lt;std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, int&gt;&amp;, std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt; &gt;' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/type_traits:116:12: [ skipping 19 instantiation contexts, use -ftemplate-backtrace-limit=0 to disable ] /usr/include/boost/polygon/detail/polygon_arbitrary_formation.hpp:1682:11: required from 'iT boost::polygon::polygon_arbitrary_formation&lt;Unit&gt;::processEvent_(cT&amp;, iT, iT) [with cT = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; iT = __gnu_cxx::__normal_iterator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge*, std::vector&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge, std::allocator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge&gt; &gt; &gt;; Unit = int]' /usr/include/boost/polygon/detail/polygon_arbitrary_formation.hpp:1361:64: required from 'void boost::polygon::polygon_arbitrary_formation&lt;Unit&gt;::scan(cT&amp;, iT, iT) [with cT = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; iT = __gnu_cxx::__normal_iterator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge*, std::vector&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge, std::allocator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge&gt; &gt; &gt;; Unit = int]' /usr/include/boost/polygon/polygon_set_data.hpp:798:7: required from 'void boost::polygon::polygon_set_data&lt;T&gt;::get_fracture(output_container&amp;, bool, concept_type) const [with output_container = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; concept_type = boost::polygon::polygon_concept; T = int]' /usr/include/boost/polygon/polygon_set_data.hpp:781:37: required from 'void boost::polygon::polygon_set_data&lt;T&gt;::get_dispatch(output_container&amp;, boost::polygon::polygon_concept) const [with output_container = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; T = int]' /usr/include/boost/polygon/polygon_set_data.hpp:233:100: required from 'void boost::polygon::polygon_set_data&lt;T&gt;::get(output_container&amp;) const [with output_container = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; T = int]' t.cpp:11:15: required from here /usr/include/boost/polygon/polygon_traits.hpp:583:3: note: template&lt;class T1, class T2&gt; typename boost::enable_if&lt;typename boost::polygon::gtl_and&lt;typename boost::polygon::is_any_mutable_polygon_type&lt;T&gt;::type, typename boost::polygon::is_rectangle_concept&lt;typename boost::polygon::geometry_concept&lt;PointType2&gt;::type&gt;::type&gt;::type, T1&gt;::type&amp; boost::polygon::assign(T1&amp;, const T2&amp;) assign(T1&amp; polygon, const T2&amp; rect) { ^ /usr/include/boost/polygon/polygon_traits.hpp:583:3: note: template argument deduction/substitution failed: /usr/include/boost/polygon/polygon_traits.hpp: In substitution of 'template&lt;class T1, class T2&gt; typename boost::enable_if&lt;typename boost::polygon::gtl_and&lt;typename boost::polygon::is_any_mutable_polygon_type&lt;T&gt;::type, typename boost::polygon::is_rectangle_concept&lt;typename boost::polygon::geometry_concept&lt;PointType2&gt;::type&gt;::type&gt;::type, T1&gt;::type&amp; boost::polygon::assign(T1&amp;, const T2&amp;) [with T1 = boost::polygon::point_data&lt;int&gt;; T2 = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;]': /usr/include/boost/polygon/point_data.hpp:55:23: required from 'boost::polygon::point_data&lt;T&gt;&amp; boost::polygon::point_data&lt;T&gt;::operator=(const PointType&amp;) [with PointType = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;; T = int]' /usr/include/boost/polygon/point_data.hpp:50:11: required from 'boost::polygon::point_data&lt;T&gt;::point_data(const PointType&amp;) [with PointType = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;; T = int]' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/bits/stl_pair.h:125:39: required from 'constexpr std::pair&lt;_T1, _T2&gt;::pair(const std::pair&lt;_U1, _U2&gt;&amp;) [with _U1 = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;; _U2 = int; &lt;template-parameter-2-3&gt; = void; _T1 = boost::polygon::point_data&lt;int&gt;; _T2 = boost::polygon::point_data&lt;int&gt;]' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/type_traits:1305:35: required by substitution of 'template&lt;class _From1, class _To1&gt; static decltype ((__test_aux&lt;_To1&gt;(declval&lt;_From1&gt;()), std::__sfinae_types::__one())) std::__is_convertible_helper&lt;_From, _To, false&gt;::__test(int) [with _From1 = _From1; _To1 = _To1; _From = const std::pair&lt;std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, int&gt;&amp;; _To = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;] [with _From1 = const std::pair&lt;std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, int&gt;&amp;; _To1 = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;]' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/type_traits:1312:50: required from 'constexpr const bool std::__is_convertible_helper&lt;const std::pair&lt;std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, int&gt;&amp;, std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, false&gt;::value' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/type_traits:1317:12: [ skipping 20 instantiation contexts, use -ftemplate-backtrace-limit=0 to disable ] /usr/include/boost/polygon/detail/polygon_arbitrary_formation.hpp:1682:11: required from 'iT boost::polygon::polygon_arbitrary_formation&lt;Unit&gt;::processEvent_(cT&amp;, iT, iT) [with cT = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; iT = __gnu_cxx::__normal_iterator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge*, std::vector&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge, std::allocator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge&gt; &gt; &gt;; Unit = int]' /usr/include/boost/polygon/detail/polygon_arbitrary_formation.hpp:1361:64: required from 'void boost::polygon::polygon_arbitrary_formation&lt;Unit&gt;::scan(cT&amp;, iT, iT) [with cT = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; iT = __gnu_cxx::__normal_iterator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge*, std::vector&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge, std::allocator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge&gt; &gt; &gt;; Unit = int]' /usr/include/boost/polygon/polygon_set_data.hpp:798:7: required from 'void boost::polygon::polygon_set_data&lt;T&gt;::get_fracture(output_container&amp;, bool, concept_type) const [with output_container = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; concept_type = boost::polygon::polygon_concept; T = int]' /usr/include/boost/polygon/polygon_set_data.hpp:781:37: required from 'void boost::polygon::polygon_set_data&lt;T&gt;::get_dispatch(output_container&amp;, boost::polygon::polygon_concept) const [with output_container = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; T = int]' /usr/include/boost/polygon/polygon_set_data.hpp:233:100: required from 'void boost::polygon::polygon_set_data&lt;T&gt;::get(output_container&amp;) const [with output_container = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; T = int]' t.cpp:11:15: required from here /usr/include/boost/polygon/polygon_traits.hpp:583:3: error: no type named 'type' in 'struct boost::enable_if&lt;mpl_::bool_&lt;false&gt;, boost::polygon::point_data&lt;int&gt; &gt;' /usr/include/boost/polygon/point_data.hpp: In instantiation of 'boost::polygon::point_data&lt;T&gt;&amp; boost::polygon::point_data&lt;T&gt;::operator=(const PointType&amp;) [with PointType = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;; T = int]': /usr/include/boost/polygon/point_data.hpp:50:11: required from 'boost::polygon::point_data&lt;T&gt;::point_data(const PointType&amp;) [with PointType = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;; T = int]' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/bits/stl_pair.h:125:39: required from 'constexpr std::pair&lt;_T1, _T2&gt;::pair(const std::pair&lt;_U1, _U2&gt;&amp;) [with _U1 = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;; _U2 = int; &lt;template-parameter-2-3&gt; = void; _T1 = boost::polygon::point_data&lt;int&gt;; _T2 = boost::polygon::point_data&lt;int&gt;]' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/type_traits:1305:35: required by substitution of 'template&lt;class _From1, class _To1&gt; static decltype ((__test_aux&lt;_To1&gt;(declval&lt;_From1&gt;()), std::__sfinae_types::__one())) std::__is_convertible_helper&lt;_From, _To, false&gt;::__test(int) [with _From1 = _From1; _To1 = _To1; _From = const std::pair&lt;std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, int&gt;&amp;; _To = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;] [with _From1 = const std::pair&lt;std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, int&gt;&amp;; _To1 = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;]' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/type_traits:1312:50: required from 'constexpr const bool std::__is_convertible_helper&lt;const std::pair&lt;std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, int&gt;&amp;, std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, false&gt;::value' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/type_traits:1317:12: required from 'struct std::is_convertible&lt;const std::pair&lt;std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, int&gt;&amp;, std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt; &gt;' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/type_traits:116:12: [ skipping 19 instantiation contexts, use -ftemplate-backtrace-limit=0 to disable ] /usr/include/boost/polygon/detail/polygon_arbitrary_formation.hpp:1682:11: required from 'iT boost::polygon::polygon_arbitrary_formation&lt;Unit&gt;::processEvent_(cT&amp;, iT, iT) [with cT = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; iT = __gnu_cxx::__normal_iterator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge*, std::vector&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge, std::allocator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge&gt; &gt; &gt;; Unit = int]' /usr/include/boost/polygon/detail/polygon_arbitrary_formation.hpp:1361:64: required from 'void boost::polygon::polygon_arbitrary_formation&lt;Unit&gt;::scan(cT&amp;, iT, iT) [with cT = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; iT = __gnu_cxx::__normal_iterator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge*, std::vector&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge, std::allocator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge&gt; &gt; &gt;; Unit = int]' /usr/include/boost/polygon/polygon_set_data.hpp:798:7: required from 'void boost::polygon::polygon_set_data&lt;T&gt;::get_fracture(output_container&amp;, bool, concept_type) const [with output_container = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; concept_type = boost::polygon::polygon_concept; T = int]' /usr/include/boost/polygon/polygon_set_data.hpp:781:37: required from 'void boost::polygon::polygon_set_data&lt;T&gt;::get_dispatch(output_container&amp;, boost::polygon::polygon_concept) const [with output_container = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; T = int]' /usr/include/boost/polygon/polygon_set_data.hpp:233:100: required from 'void boost::polygon::polygon_set_data&lt;T&gt;::get(output_container&amp;) const [with output_container = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; T = int]' t.cpp:11:15: required from here /usr/include/boost/polygon/polygon_traits.hpp:570:3: note: template&lt;class T1, class T2&gt; typename boost::enable_if&lt;typename boost::polygon::gtl_and&lt;typename boost::polygon::is_mutable_polygon_90_with_holes_type&lt;T&gt;::type, typename boost::polygon::is_polygon_90_with_holes_type&lt;T2&gt;::type&gt;::type, T1&gt;::type&amp; boost::polygon::assign(T1&amp;, const T2&amp;) assign(T1&amp; lvalue, const T2&amp; rvalue) { ^ /usr/include/boost/polygon/polygon_traits.hpp:570:3: note: template argument deduction/substitution failed: /usr/include/boost/polygon/polygon_traits.hpp: In substitution of 'template&lt;class T1, class T2&gt; typename boost::enable_if&lt;typename boost::polygon::gtl_and&lt;typename boost::polygon::is_mutable_polygon_90_with_holes_type&lt;T&gt;::type, typename boost::polygon::is_polygon_90_with_holes_type&lt;T2&gt;::type&gt;::type, T1&gt;::type&amp; boost::polygon::assign(T1&amp;, const T2&amp;) [with T1 = boost::polygon::point_data&lt;int&gt;; T2 = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;]': /usr/include/boost/polygon/point_data.hpp:55:23: required from 'boost::polygon::point_data&lt;T&gt;&amp; boost::polygon::point_data&lt;T&gt;::operator=(const PointType&amp;) [with PointType = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;; T = int]' /usr/include/boost/polygon/point_data.hpp:50:11: required from 'boost::polygon::point_data&lt;T&gt;::point_data(const PointType&amp;) [with PointType = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;; T = int]' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/bits/stl_pair.h:125:39: required from 'constexpr std::pair&lt;_T1, _T2&gt;::pair(const std::pair&lt;_U1, _U2&gt;&amp;) [with _U1 = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;; _U2 = int; &lt;template-parameter-2-3&gt; = void; _T1 = boost::polygon::point_data&lt;int&gt;; _T2 = boost::polygon::point_data&lt;int&gt;]' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/type_traits:1305:35: required by substitution of 'template&lt;class _From1, class _To1&gt; static decltype ((__test_aux&lt;_To1&gt;(declval&lt;_From1&gt;()), std::__sfinae_types::__one())) std::__is_convertible_helper&lt;_From, _To, false&gt;::__test(int) [with _From1 = _From1; _To1 = _To1; _From = const std::pair&lt;std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, int&gt;&amp;; _To = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;] [with _From1 = const std::pair&lt;std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, int&gt;&amp;; _To1 = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;]' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/type_traits:1312:50: required from 'constexpr const bool std::__is_convertible_helper&lt;const std::pair&lt;std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, int&gt;&amp;, std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, false&gt;::value' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/type_traits:1317:12: [ skipping 20 instantiation contexts, use -ftemplate-backtrace-limit=0 to disable ] /usr/include/boost/polygon/detail/polygon_arbitrary_formation.hpp:1682:11: required from 'iT boost::polygon::polygon_arbitrary_formation&lt;Unit&gt;::processEvent_(cT&amp;, iT, iT) [with cT = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; iT = __gnu_cxx::__normal_iterator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge*, std::vector&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge, std::allocator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge&gt; &gt; &gt;; Unit = int]' /usr/include/boost/polygon/detail/polygon_arbitrary_formation.hpp:1361:64: required from 'void boost::polygon::polygon_arbitrary_formation&lt;Unit&gt;::scan(cT&amp;, iT, iT) [with cT = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; iT = __gnu_cxx::__normal_iterator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge*, std::vector&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge, std::allocator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge&gt; &gt; &gt;; Unit = int]' /usr/include/boost/polygon/polygon_set_data.hpp:798:7: required from 'void boost::polygon::polygon_set_data&lt;T&gt;::get_fracture(output_container&amp;, bool, concept_type) const [with output_container = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; concept_type = boost::polygon::polygon_concept; T = int]' /usr/include/boost/polygon/polygon_set_data.hpp:781:37: required from 'void boost::polygon::polygon_set_data&lt;T&gt;::get_dispatch(output_container&amp;, boost::polygon::polygon_concept) const [with output_container = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; T = int]' /usr/include/boost/polygon/polygon_set_data.hpp:233:100: required from 'void boost::polygon::polygon_set_data&lt;T&gt;::get(output_container&amp;) const [with output_container = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; T = int]' t.cpp:11:15: required from here /usr/include/boost/polygon/polygon_traits.hpp:570:3: error: no type named 'type' in 'struct boost::enable_if&lt;mpl_::bool_&lt;false&gt;, boost::polygon::point_data&lt;int&gt; &gt;' /usr/include/boost/polygon/point_data.hpp: In instantiation of 'boost::polygon::point_data&lt;T&gt;&amp; boost::polygon::point_data&lt;T&gt;::operator=(const PointType&amp;) [with PointType = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;; T = int]': /usr/include/boost/polygon/point_data.hpp:50:11: required from 'boost::polygon::point_data&lt;T&gt;::point_data(const PointType&amp;) [with PointType = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;; T = int]' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/bits/stl_pair.h:125:39: required from 'constexpr std::pair&lt;_T1, _T2&gt;::pair(const std::pair&lt;_U1, _U2&gt;&amp;) [with _U1 = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;; _U2 = int; &lt;template-parameter-2-3&gt; = void; _T1 = boost::polygon::point_data&lt;int&gt;; _T2 = boost::polygon::point_data&lt;int&gt;]' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/type_traits:1305:35: required by substitution of 'template&lt;class _From1, class _To1&gt; static decltype ((__test_aux&lt;_To1&gt;(declval&lt;_From1&gt;()), std::__sfinae_types::__one())) std::__is_convertible_helper&lt;_From, _To, false&gt;::__test(int) [with _From1 = _From1; _To1 = _To1; _From = const std::pair&lt;std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, int&gt;&amp;; _To = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;] [with _From1 = const std::pair&lt;std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, int&gt;&amp;; _To1 = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;]' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/type_traits:1312:50: required from 'constexpr const bool std::__is_convertible_helper&lt;const std::pair&lt;std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, int&gt;&amp;, std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, false&gt;::value' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/type_traits:1317:12: required from 'struct std::is_convertible&lt;const std::pair&lt;std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, int&gt;&amp;, std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt; &gt;' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/type_traits:116:12: [ skipping 19 instantiation contexts, use -ftemplate-backtrace-limit=0 to disable ] /usr/include/boost/polygon/detail/polygon_arbitrary_formation.hpp:1682:11: required from 'iT boost::polygon::polygon_arbitrary_formation&lt;Unit&gt;::processEvent_(cT&amp;, iT, iT) [with cT = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; iT = __gnu_cxx::__normal_iterator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge*, std::vector&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge, std::allocator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge&gt; &gt; &gt;; Unit = int]' /usr/include/boost/polygon/detail/polygon_arbitrary_formation.hpp:1361:64: required from 'void boost::polygon::polygon_arbitrary_formation&lt;Unit&gt;::scan(cT&amp;, iT, iT) [with cT = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; iT = __gnu_cxx::__normal_iterator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge*, std::vector&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge, std::allocator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge&gt; &gt; &gt;; Unit = int]' /usr/include/boost/polygon/polygon_set_data.hpp:798:7: required from 'void boost::polygon::polygon_set_data&lt;T&gt;::get_fracture(output_container&amp;, bool, concept_type) const [with output_container = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; concept_type = boost::polygon::polygon_concept; T = int]' /usr/include/boost/polygon/polygon_set_data.hpp:781:37: required from 'void boost::polygon::polygon_set_data&lt;T&gt;::get_dispatch(output_container&amp;, boost::polygon::polygon_concept) const [with output_container = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; T = int]' /usr/include/boost/polygon/polygon_set_data.hpp:233:100: required from 'void boost::polygon::polygon_set_data&lt;T&gt;::get(output_container&amp;) const [with output_container = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; T = int]' t.cpp:11:15: required from here /usr/include/boost/polygon/polygon_traits.hpp:559:3: note: template&lt;class T1, class T2&gt; typename boost::enable_if&lt;typename boost::polygon::gtl_and&lt;typename boost::polygon::is_mutable_polygon_90_type&lt;T&gt;::type, typename boost::polygon::is_polygon_90_type&lt;T2&gt;::type&gt;::type, T1&gt;::type&amp; boost::polygon::assign(T1&amp;, const T2&amp;) assign(T1&amp; lvalue, const T2&amp; rvalue) { ^ /usr/include/boost/polygon/polygon_traits.hpp:559:3: note: template argument deduction/substitution failed: /usr/include/boost/polygon/polygon_traits.hpp: In substitution of 'template&lt;class T1, class T2&gt; typename boost::enable_if&lt;typename boost::polygon::gtl_and&lt;typename boost::polygon::is_mutable_polygon_90_type&lt;T&gt;::type, typename boost::polygon::is_polygon_90_type&lt;T2&gt;::type&gt;::type, T1&gt;::type&amp; boost::polygon::assign(T1&amp;, const T2&amp;) [with T1 = boost::polygon::point_data&lt;int&gt;; T2 = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;]': /usr/include/boost/polygon/point_data.hpp:55:23: required from 'boost::polygon::point_data&lt;T&gt;&amp; boost::polygon::point_data&lt;T&gt;::operator=(const PointType&amp;) [with PointType = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;; T = int]' /usr/include/boost/polygon/point_data.hpp:50:11: required from 'boost::polygon::point_data&lt;T&gt;::point_data(const PointType&amp;) [with PointType = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;; T = int]' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/bits/stl_pair.h:125:39: required from 'constexpr std::pair&lt;_T1, _T2&gt;::pair(const std::pair&lt;_U1, _U2&gt;&amp;) [with _U1 = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;; _U2 = int; &lt;template-parameter-2-3&gt; = void; _T1 = boost::polygon::point_data&lt;int&gt;; _T2 = boost::polygon::point_data&lt;int&gt;]' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/type_traits:1305:35: required by substitution of 'template&lt;class _From1, class _To1&gt; static decltype ((__test_aux&lt;_To1&gt;(declval&lt;_From1&gt;()), std::__sfinae_types::__one())) std::__is_convertible_helper&lt;_From, _To, false&gt;::__test(int) [with _From1 = _From1; _To1 = _To1; _From = const std::pair&lt;std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, int&gt;&amp;; _To = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;] [with _From1 = const std::pair&lt;std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, int&gt;&amp;; _To1 = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;]' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/type_traits:1312:50: required from 'constexpr const bool std::__is_convertible_helper&lt;const std::pair&lt;std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, int&gt;&amp;, std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, false&gt;::value' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/type_traits:1317:12: [ skipping 20 instantiation contexts, use -ftemplate-backtrace-limit=0 to disable ] /usr/include/boost/polygon/detail/polygon_arbitrary_formation.hpp:1682:11: required from 'iT boost::polygon::polygon_arbitrary_formation&lt;Unit&gt;::processEvent_(cT&amp;, iT, iT) [with cT = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; iT = __gnu_cxx::__normal_iterator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge*, std::vector&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge, std::allocator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge&gt; &gt; &gt;; Unit = int]' /usr/include/boost/polygon/detail/polygon_arbitrary_formation.hpp:1361:64: required from 'void boost::polygon::polygon_arbitrary_formation&lt;Unit&gt;::scan(cT&amp;, iT, iT) [with cT = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; iT = __gnu_cxx::__normal_iterator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge*, std::vector&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge, std::allocator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge&gt; &gt; &gt;; Unit = int]' /usr/include/boost/polygon/polygon_set_data.hpp:798:7: required from 'void boost::polygon::polygon_set_data&lt;T&gt;::get_fracture(output_container&amp;, bool, concept_type) const [with output_container = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; concept_type = boost::polygon::polygon_concept; T = int]' /usr/include/boost/polygon/polygon_set_data.hpp:781:37: required from 'void boost::polygon::polygon_set_data&lt;T&gt;::get_dispatch(output_container&amp;, boost::polygon::polygon_concept) const [with output_container = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; T = int]' /usr/include/boost/polygon/polygon_set_data.hpp:233:100: required from 'void boost::polygon::polygon_set_data&lt;T&gt;::get(output_container&amp;) const [with output_container = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; T = int]' t.cpp:11:15: required from here /usr/include/boost/polygon/polygon_traits.hpp:559:3: error: no type named 'type' in 'struct boost::enable_if&lt;mpl_::bool_&lt;false&gt;, boost::polygon::point_data&lt;int&gt; &gt;' /usr/include/boost/polygon/point_data.hpp: In instantiation of 'boost::polygon::point_data&lt;T&gt;&amp; boost::polygon::point_data&lt;T&gt;::operator=(const PointType&amp;) [with PointType = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;; T = int]': /usr/include/boost/polygon/point_data.hpp:50:11: required from 'boost::polygon::point_data&lt;T&gt;::point_data(const PointType&amp;) [with PointType = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;; T = int]' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/bits/stl_pair.h:125:39: required from 'constexpr std::pair&lt;_T1, _T2&gt;::pair(const std::pair&lt;_U1, _U2&gt;&amp;) [with _U1 = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;; _U2 = int; &lt;template-parameter-2-3&gt; = void; _T1 = boost::polygon::point_data&lt;int&gt;; _T2 = boost::polygon::point_data&lt;int&gt;]' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/type_traits:1305:35: required by substitution of 'template&lt;class _From1, class _To1&gt; static decltype ((__test_aux&lt;_To1&gt;(declval&lt;_From1&gt;()), std::__sfinae_types::__one())) std::__is_convertible_helper&lt;_From, _To, false&gt;::__test(int) [with _From1 = _From1; _To1 = _To1; _From = const std::pair&lt;std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, int&gt;&amp;; _To = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;] [with _From1 = const std::pair&lt;std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, int&gt;&amp;; _To1 = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;]' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/type_traits:1312:50: required from 'constexpr const bool std::__is_convertible_helper&lt;const std::pair&lt;std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, int&gt;&amp;, std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, false&gt;::value' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/type_traits:1317:12: required from 'struct std::is_convertible&lt;const std::pair&lt;std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, int&gt;&amp;, std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt; &gt;' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/type_traits:116:12: [ skipping 19 instantiation contexts, use -ftemplate-backtrace-limit=0 to disable ] /usr/include/boost/polygon/detail/polygon_arbitrary_formation.hpp:1682:11: required from 'iT boost::polygon::polygon_arbitrary_formation&lt;Unit&gt;::processEvent_(cT&amp;, iT, iT) [with cT = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; iT = __gnu_cxx::__normal_iterator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge*, std::vector&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge, std::allocator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge&gt; &gt; &gt;; Unit = int]' /usr/include/boost/polygon/detail/polygon_arbitrary_formation.hpp:1361:64: required from 'void boost::polygon::polygon_arbitrary_formation&lt;Unit&gt;::scan(cT&amp;, iT, iT) [with cT = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; iT = __gnu_cxx::__normal_iterator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge*, std::vector&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge, std::allocator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge&gt; &gt; &gt;; Unit = int]' /usr/include/boost/polygon/polygon_set_data.hpp:798:7: required from 'void boost::polygon::polygon_set_data&lt;T&gt;::get_fracture(output_container&amp;, bool, concept_type) const [with output_container = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; concept_type = boost::polygon::polygon_concept; T = int]' /usr/include/boost/polygon/polygon_set_data.hpp:781:37: required from 'void boost::polygon::polygon_set_data&lt;T&gt;::get_dispatch(output_container&amp;, boost::polygon::polygon_concept) const [with output_container = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; T = int]' /usr/include/boost/polygon/polygon_set_data.hpp:233:100: required from 'void boost::polygon::polygon_set_data&lt;T&gt;::get(output_container&amp;) const [with output_container = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; T = int]' t.cpp:11:15: required from here /usr/include/boost/polygon/polygon_traits.hpp:546:3: note: template&lt;class T1, class T2&gt; typename boost::enable_if&lt;typename boost::polygon::gtl_and&lt;typename boost::polygon::is_mutable_polygon_45_with_holes_type&lt;T&gt;::type, typename boost::polygon::is_polygon_45_with_holes_type&lt;T2&gt;::type&gt;::type, T1&gt;::type&amp; boost::polygon::assign(T1&amp;, const T2&amp;) assign(T1&amp; lvalue, const T2&amp; rvalue) { ^ /usr/include/boost/polygon/polygon_traits.hpp:546:3: note: template argument deduction/substitution failed: /usr/include/boost/polygon/polygon_traits.hpp: In substitution of 'template&lt;class T1, class T2&gt; typename boost::enable_if&lt;typename boost::polygon::gtl_and&lt;typename boost::polygon::is_mutable_polygon_45_with_holes_type&lt;T&gt;::type, typename boost::polygon::is_polygon_45_with_holes_type&lt;T2&gt;::type&gt;::type, T1&gt;::type&amp; boost::polygon::assign(T1&amp;, const T2&amp;) [with T1 = boost::polygon::point_data&lt;int&gt;; T2 = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;]': /usr/include/boost/polygon/point_data.hpp:55:23: required from 'boost::polygon::point_data&lt;T&gt;&amp; boost::polygon::point_data&lt;T&gt;::operator=(const PointType&amp;) [with PointType = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;; T = int]' /usr/include/boost/polygon/point_data.hpp:50:11: required from 'boost::polygon::point_data&lt;T&gt;::point_data(const PointType&amp;) [with PointType = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;; T = int]' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/bits/stl_pair.h:125:39: required from 'constexpr std::pair&lt;_T1, _T2&gt;::pair(const std::pair&lt;_U1, _U2&gt;&amp;) [with _U1 = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;; _U2 = int; &lt;template-parameter-2-3&gt; = void; _T1 = boost::polygon::point_data&lt;int&gt;; _T2 = boost::polygon::point_data&lt;int&gt;]' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/type_traits:1305:35: required by substitution of 'template&lt;class _From1, class _To1&gt; static decltype ((__test_aux&lt;_To1&gt;(declval&lt;_From1&gt;()), std::__sfinae_types::__one())) std::__is_convertible_helper&lt;_From, _To, false&gt;::__test(int) [with _From1 = _From1; _To1 = _To1; _From = const std::pair&lt;std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, int&gt;&amp;; _To = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;] [with _From1 = const std::pair&lt;std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, int&gt;&amp;; _To1 = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;]' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/type_traits:1312:50: required from 'constexpr const bool std::__is_convertible_helper&lt;const std::pair&lt;std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, int&gt;&amp;, std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, false&gt;::value' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/type_traits:1317:12: [ skipping 20 instantiation contexts, use -ftemplate-backtrace-limit=0 to disable ] /usr/include/boost/polygon/detail/polygon_arbitrary_formation.hpp:1682:11: required from 'iT boost::polygon::polygon_arbitrary_formation&lt;Unit&gt;::processEvent_(cT&amp;, iT, iT) [with cT = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; iT = __gnu_cxx::__normal_iterator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge*, std::vector&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge, std::allocator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge&gt; &gt; &gt;; Unit = int]' /usr/include/boost/polygon/detail/polygon_arbitrary_formation.hpp:1361:64: required from 'void boost::polygon::polygon_arbitrary_formation&lt;Unit&gt;::scan(cT&amp;, iT, iT) [with cT = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; iT = __gnu_cxx::__normal_iterator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge*, std::vector&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge, std::allocator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge&gt; &gt; &gt;; Unit = int]' /usr/include/boost/polygon/polygon_set_data.hpp:798:7: required from 'void boost::polygon::polygon_set_data&lt;T&gt;::get_fracture(output_container&amp;, bool, concept_type) const [with output_container = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; concept_type = boost::polygon::polygon_concept; T = int]' /usr/include/boost/polygon/polygon_set_data.hpp:781:37: required from 'void boost::polygon::polygon_set_data&lt;T&gt;::get_dispatch(output_container&amp;, boost::polygon::polygon_concept) const [with output_container = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; T = int]' /usr/include/boost/polygon/polygon_set_data.hpp:233:100: required from 'void boost::polygon::polygon_set_data&lt;T&gt;::get(output_container&amp;) const [with output_container = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; T = int]' t.cpp:11:15: required from here /usr/include/boost/polygon/polygon_traits.hpp:546:3: error: no type named 'type' in 'struct boost::enable_if&lt;mpl_::bool_&lt;false&gt;, boost::polygon::point_data&lt;int&gt; &gt;' /usr/include/boost/polygon/point_data.hpp: In instantiation of 'boost::polygon::point_data&lt;T&gt;&amp; boost::polygon::point_data&lt;T&gt;::operator=(const PointType&amp;) [with PointType = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;; T = int]': /usr/include/boost/polygon/point_data.hpp:50:11: required from 'boost::polygon::point_data&lt;T&gt;::point_data(const PointType&amp;) [with PointType = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;; T = int]' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/bits/stl_pair.h:125:39: required from 'constexpr std::pair&lt;_T1, _T2&gt;::pair(const std::pair&lt;_U1, _U2&gt;&amp;) [with _U1 = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;; _U2 = int; &lt;template-parameter-2-3&gt; = void; _T1 = boost::polygon::point_data&lt;int&gt;; _T2 = boost::polygon::point_data&lt;int&gt;]' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/type_traits:1305:35: required by substitution of 'template&lt;class _From1, class _To1&gt; static decltype ((__test_aux&lt;_To1&gt;(declval&lt;_From1&gt;()), std::__sfinae_types::__one())) std::__is_convertible_helper&lt;_From, _To, false&gt;::__test(int) [with _From1 = _From1; _To1 = _To1; _From = const std::pair&lt;std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, int&gt;&amp;; _To = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;] [with _From1 = const std::pair&lt;std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, int&gt;&amp;; _To1 = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;]' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/type_traits:1312:50: required from 'constexpr const bool std::__is_convertible_helper&lt;const std::pair&lt;std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, int&gt;&amp;, std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, false&gt;::value' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/type_traits:1317:12: required from 'struct std::is_convertible&lt;const std::pair&lt;std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, int&gt;&amp;, std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt; &gt;' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/type_traits:116:12: [ skipping 19 instantiation contexts, use -ftemplate-backtrace-limit=0 to disable ] /usr/include/boost/polygon/detail/polygon_arbitrary_formation.hpp:1682:11: required from 'iT boost::polygon::polygon_arbitrary_formation&lt;Unit&gt;::processEvent_(cT&amp;, iT, iT) [with cT = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; iT = __gnu_cxx::__normal_iterator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge*, std::vector&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge, std::allocator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge&gt; &gt; &gt;; Unit = int]' /usr/include/boost/polygon/detail/polygon_arbitrary_formation.hpp:1361:64: required from 'void boost::polygon::polygon_arbitrary_formation&lt;Unit&gt;::scan(cT&amp;, iT, iT) [with cT = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; iT = __gnu_cxx::__normal_iterator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge*, std::vector&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge, std::allocator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge&gt; &gt; &gt;; Unit = int]' /usr/include/boost/polygon/polygon_set_data.hpp:798:7: required from 'void boost::polygon::polygon_set_data&lt;T&gt;::get_fracture(output_container&amp;, bool, concept_type) const [with output_container = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; concept_type = boost::polygon::polygon_concept; T = int]' /usr/include/boost/polygon/polygon_set_data.hpp:781:37: required from 'void boost::polygon::polygon_set_data&lt;T&gt;::get_dispatch(output_container&amp;, boost::polygon::polygon_concept) const [with output_container = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; T = int]' /usr/include/boost/polygon/polygon_set_data.hpp:233:100: required from 'void boost::polygon::polygon_set_data&lt;T&gt;::get(output_container&amp;) const [with output_container = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; T = int]' t.cpp:11:15: required from here /usr/include/boost/polygon/polygon_traits.hpp:535:3: note: template&lt;class T1, class T2&gt; typename boost::enable_if&lt;typename boost::polygon::gtl_and&lt;typename boost::polygon::is_mutable_polygon_45_type&lt;T&gt;::type, typename boost::polygon::is_polygon_45_type&lt;T2&gt;::type&gt;::type, T1&gt;::type&amp; boost::polygon::assign(T1&amp;, const T2&amp;) assign(T1&amp; lvalue, const T2&amp; rvalue) { ^ /usr/include/boost/polygon/polygon_traits.hpp:535:3: note: template argument deduction/substitution failed: /usr/include/boost/polygon/polygon_traits.hpp: In substitution of 'template&lt;class T1, class T2&gt; typename boost::enable_if&lt;typename boost::polygon::gtl_and&lt;typename boost::polygon::is_mutable_polygon_45_type&lt;T&gt;::type, typename boost::polygon::is_polygon_45_type&lt;T2&gt;::type&gt;::type, T1&gt;::type&amp; boost::polygon::assign(T1&amp;, const T2&amp;) [with T1 = boost::polygon::point_data&lt;int&gt;; T2 = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;]': /usr/include/boost/polygon/point_data.hpp:55:23: required from 'boost::polygon::point_data&lt;T&gt;&amp; boost::polygon::point_data&lt;T&gt;::operator=(const PointType&amp;) [with PointType = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;; T = int]' /usr/include/boost/polygon/point_data.hpp:50:11: required from 'boost::polygon::point_data&lt;T&gt;::point_data(const PointType&amp;) [with PointType = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;; T = int]' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/bits/stl_pair.h:125:39: required from 'constexpr std::pair&lt;_T1, _T2&gt;::pair(const std::pair&lt;_U1, _U2&gt;&amp;) [with _U1 = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;; _U2 = int; &lt;template-parameter-2-3&gt; = void; _T1 = boost::polygon::point_data&lt;int&gt;; _T2 = boost::polygon::point_data&lt;int&gt;]' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/type_traits:1305:35: required by substitution of 'template&lt;class _From1, class _To1&gt; static decltype ((__test_aux&lt;_To1&gt;(declval&lt;_From1&gt;()), std::__sfinae_types::__one())) std::__is_convertible_helper&lt;_From, _To, false&gt;::__test(int) [with _From1 = _From1; _To1 = _To1; _From = const std::pair&lt;std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, int&gt;&amp;; _To = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;] [with _From1 = const std::pair&lt;std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, int&gt;&amp;; _To1 = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;]' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/type_traits:1312:50: required from 'constexpr const bool std::__is_convertible_helper&lt;const std::pair&lt;std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, int&gt;&amp;, std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, false&gt;::value' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/type_traits:1317:12: [ skipping 20 instantiation contexts, use -ftemplate-backtrace-limit=0 to disable ] /usr/include/boost/polygon/detail/polygon_arbitrary_formation.hpp:1682:11: required from 'iT boost::polygon::polygon_arbitrary_formation&lt;Unit&gt;::processEvent_(cT&amp;, iT, iT) [with cT = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; iT = __gnu_cxx::__normal_iterator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge*, std::vector&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge, std::allocator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge&gt; &gt; &gt;; Unit = int]' /usr/include/boost/polygon/detail/polygon_arbitrary_formation.hpp:1361:64: required from 'void boost::polygon::polygon_arbitrary_formation&lt;Unit&gt;::scan(cT&amp;, iT, iT) [with cT = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; iT = __gnu_cxx::__normal_iterator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge*, std::vector&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge, std::allocator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge&gt; &gt; &gt;; Unit = int]' /usr/include/boost/polygon/polygon_set_data.hpp:798:7: required from 'void boost::polygon::polygon_set_data&lt;T&gt;::get_fracture(output_container&amp;, bool, concept_type) const [with output_container = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; concept_type = boost::polygon::polygon_concept; T = int]' /usr/include/boost/polygon/polygon_set_data.hpp:781:37: required from 'void boost::polygon::polygon_set_data&lt;T&gt;::get_dispatch(output_container&amp;, boost::polygon::polygon_concept) const [with output_container = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; T = int]' /usr/include/boost/polygon/polygon_set_data.hpp:233:100: required from 'void boost::polygon::polygon_set_data&lt;T&gt;::get(output_container&amp;) const [with output_container = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; T = int]' t.cpp:11:15: required from here /usr/include/boost/polygon/polygon_traits.hpp:535:3: error: no type named 'type' in 'struct boost::enable_if&lt;mpl_::bool_&lt;false&gt;, boost::polygon::point_data&lt;int&gt; &gt;' /usr/include/boost/polygon/point_data.hpp: In instantiation of 'boost::polygon::point_data&lt;T&gt;&amp; boost::polygon::point_data&lt;T&gt;::operator=(const PointType&amp;) [with PointType = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;; T = int]': /usr/include/boost/polygon/point_data.hpp:50:11: required from 'boost::polygon::point_data&lt;T&gt;::point_data(const PointType&amp;) [with PointType = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;; T = int]' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/bits/stl_pair.h:125:39: required from 'constexpr std::pair&lt;_T1, _T2&gt;::pair(const std::pair&lt;_U1, _U2&gt;&amp;) [with _U1 = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;; _U2 = int; &lt;template-parameter-2-3&gt; = void; _T1 = boost::polygon::point_data&lt;int&gt;; _T2 = boost::polygon::point_data&lt;int&gt;]' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/type_traits:1305:35: required by substitution of 'template&lt;class _From1, class _To1&gt; static decltype ((__test_aux&lt;_To1&gt;(declval&lt;_From1&gt;()), std::__sfinae_types::__one())) std::__is_convertible_helper&lt;_From, _To, false&gt;::__test(int) [with _From1 = _From1; _To1 = _To1; _From = const std::pair&lt;std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, int&gt;&amp;; _To = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;] [with _From1 = const std::pair&lt;std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, int&gt;&amp;; _To1 = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;]' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/type_traits:1312:50: required from 'constexpr const bool std::__is_convertible_helper&lt;const std::pair&lt;std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, int&gt;&amp;, std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, false&gt;::value' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/type_traits:1317:12: required from 'struct std::is_convertible&lt;const std::pair&lt;std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, int&gt;&amp;, std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt; &gt;' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/type_traits:116:12: [ skipping 19 instantiation contexts, use -ftemplate-backtrace-limit=0 to disable ] /usr/include/boost/polygon/detail/polygon_arbitrary_formation.hpp:1682:11: required from 'iT boost::polygon::polygon_arbitrary_formation&lt;Unit&gt;::processEvent_(cT&amp;, iT, iT) [with cT = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; iT = __gnu_cxx::__normal_iterator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge*, std::vector&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge, std::allocator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge&gt; &gt; &gt;; Unit = int]' /usr/include/boost/polygon/detail/polygon_arbitrary_formation.hpp:1361:64: required from 'void boost::polygon::polygon_arbitrary_formation&lt;Unit&gt;::scan(cT&amp;, iT, iT) [with cT = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; iT = __gnu_cxx::__normal_iterator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge*, std::vector&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge, std::allocator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge&gt; &gt; &gt;; Unit = int]' /usr/include/boost/polygon/polygon_set_data.hpp:798:7: required from 'void boost::polygon::polygon_set_data&lt;T&gt;::get_fracture(output_container&amp;, bool, concept_type) const [with output_container = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; concept_type = boost::polygon::polygon_concept; T = int]' /usr/include/boost/polygon/polygon_set_data.hpp:781:37: required from 'void boost::polygon::polygon_set_data&lt;T&gt;::get_dispatch(output_container&amp;, boost::polygon::polygon_concept) const [with output_container = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; T = int]' /usr/include/boost/polygon/polygon_set_data.hpp:233:100: required from 'void boost::polygon::polygon_set_data&lt;T&gt;::get(output_container&amp;) const [with output_container = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; T = int]' t.cpp:11:15: required from here /usr/include/boost/polygon/polygon_traits.hpp:524:3: note: template&lt;class T1, class T2&gt; typename boost::enable_if&lt;typename boost::polygon::gtl_and&lt;typename boost::polygon::is_mutable_polygon_with_holes_type&lt;T&gt;::type, typename boost::polygon::is_polygon_with_holes_type&lt;T2&gt;::type&gt;::type, T1&gt;::type&amp; boost::polygon::assign(T1&amp;, const T2&amp;) assign(T1&amp; lvalue, const T2&amp; rvalue) { ^ /usr/include/boost/polygon/polygon_traits.hpp:524:3: note: template argument deduction/substitution failed: /usr/include/boost/polygon/polygon_traits.hpp: In substitution of 'template&lt;class T1, class T2&gt; typename boost::enable_if&lt;typename boost::polygon::gtl_and&lt;typename boost::polygon::is_mutable_polygon_with_holes_type&lt;T&gt;::type, typename boost::polygon::is_polygon_with_holes_type&lt;T2&gt;::type&gt;::type, T1&gt;::type&amp; boost::polygon::assign(T1&amp;, const T2&amp;) [with T1 = boost::polygon::point_data&lt;int&gt;; T2 = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;]': /usr/include/boost/polygon/point_data.hpp:55:23: required from 'boost::polygon::point_data&lt;T&gt;&amp; boost::polygon::point_data&lt;T&gt;::operator=(const PointType&amp;) [with PointType = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;; T = int]' /usr/include/boost/polygon/point_data.hpp:50:11: required from 'boost::polygon::point_data&lt;T&gt;::point_data(const PointType&amp;) [with PointType = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;; T = int]' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/bits/stl_pair.h:125:39: required from 'constexpr std::pair&lt;_T1, _T2&gt;::pair(const std::pair&lt;_U1, _U2&gt;&amp;) [with _U1 = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;; _U2 = int; &lt;template-parameter-2-3&gt; = void; _T1 = boost::polygon::point_data&lt;int&gt;; _T2 = boost::polygon::point_data&lt;int&gt;]' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/type_traits:1305:35: required by substitution of 'template&lt;class _From1, class _To1&gt; static decltype ((__test_aux&lt;_To1&gt;(declval&lt;_From1&gt;()), std::__sfinae_types::__one())) std::__is_convertible_helper&lt;_From, _To, false&gt;::__test(int) [with _From1 = _From1; _To1 = _To1; _From = const std::pair&lt;std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, int&gt;&amp;; _To = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;] [with _From1 = const std::pair&lt;std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, int&gt;&amp;; _To1 = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;]' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/type_traits:1312:50: required from 'constexpr const bool std::__is_convertible_helper&lt;const std::pair&lt;std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, int&gt;&amp;, std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, false&gt;::value' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/type_traits:1317:12: [ skipping 20 instantiation contexts, use -ftemplate-backtrace-limit=0 to disable ] /usr/include/boost/polygon/detail/polygon_arbitrary_formation.hpp:1682:11: required from 'iT boost::polygon::polygon_arbitrary_formation&lt;Unit&gt;::processEvent_(cT&amp;, iT, iT) [with cT = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; iT = __gnu_cxx::__normal_iterator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge*, std::vector&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge, std::allocator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge&gt; &gt; &gt;; Unit = int]' /usr/include/boost/polygon/detail/polygon_arbitrary_formation.hpp:1361:64: required from 'void boost::polygon::polygon_arbitrary_formation&lt;Unit&gt;::scan(cT&amp;, iT, iT) [with cT = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; iT = __gnu_cxx::__normal_iterator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge*, std::vector&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge, std::allocator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge&gt; &gt; &gt;; Unit = int]' /usr/include/boost/polygon/polygon_set_data.hpp:798:7: required from 'void boost::polygon::polygon_set_data&lt;T&gt;::get_fracture(output_container&amp;, bool, concept_type) const [with output_container = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; concept_type = boost::polygon::polygon_concept; T = int]' /usr/include/boost/polygon/polygon_set_data.hpp:781:37: required from 'void boost::polygon::polygon_set_data&lt;T&gt;::get_dispatch(output_container&amp;, boost::polygon::polygon_concept) const [with output_container = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; T = int]' /usr/include/boost/polygon/polygon_set_data.hpp:233:100: required from 'void boost::polygon::polygon_set_data&lt;T&gt;::get(output_container&amp;) const [with output_container = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; T = int]' t.cpp:11:15: required from here /usr/include/boost/polygon/polygon_traits.hpp:524:3: error: no type named 'type' in 'struct boost::enable_if&lt;mpl_::bool_&lt;false&gt;, boost::polygon::point_data&lt;int&gt; &gt;' /usr/include/boost/polygon/point_data.hpp: In instantiation of 'boost::polygon::point_data&lt;T&gt;&amp; boost::polygon::point_data&lt;T&gt;::operator=(const PointType&amp;) [with PointType = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;; T = int]': /usr/include/boost/polygon/point_data.hpp:50:11: required from 'boost::polygon::point_data&lt;T&gt;::point_data(const PointType&amp;) [with PointType = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;; T = int]' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/bits/stl_pair.h:125:39: required from 'constexpr std::pair&lt;_T1, _T2&gt;::pair(const std::pair&lt;_U1, _U2&gt;&amp;) [with _U1 = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;; _U2 = int; &lt;template-parameter-2-3&gt; = void; _T1 = boost::polygon::point_data&lt;int&gt;; _T2 = boost::polygon::point_data&lt;int&gt;]' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/type_traits:1305:35: required by substitution of 'template&lt;class _From1, class _To1&gt; static decltype ((__test_aux&lt;_To1&gt;(declval&lt;_From1&gt;()), std::__sfinae_types::__one())) std::__is_convertible_helper&lt;_From, _To, false&gt;::__test(int) [with _From1 = _From1; _To1 = _To1; _From = const std::pair&lt;std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, int&gt;&amp;; _To = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;] [with _From1 = const std::pair&lt;std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, int&gt;&amp;; _To1 = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;]' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/type_traits:1312:50: required from 'constexpr const bool std::__is_convertible_helper&lt;const std::pair&lt;std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, int&gt;&amp;, std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, false&gt;::value' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/type_traits:1317:12: required from 'struct std::is_convertible&lt;const std::pair&lt;std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, int&gt;&amp;, std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt; &gt;' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/type_traits:116:12: [ skipping 19 instantiation contexts, use -ftemplate-backtrace-limit=0 to disable ] /usr/include/boost/polygon/detail/polygon_arbitrary_formation.hpp:1682:11: required from 'iT boost::polygon::polygon_arbitrary_formation&lt;Unit&gt;::processEvent_(cT&amp;, iT, iT) [with cT = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; iT = __gnu_cxx::__normal_iterator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge*, std::vector&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge, std::allocator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge&gt; &gt; &gt;; Unit = int]' /usr/include/boost/polygon/detail/polygon_arbitrary_formation.hpp:1361:64: required from 'void boost::polygon::polygon_arbitrary_formation&lt;Unit&gt;::scan(cT&amp;, iT, iT) [with cT = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; iT = __gnu_cxx::__normal_iterator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge*, std::vector&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge, std::allocator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge&gt; &gt; &gt;; Unit = int]' /usr/include/boost/polygon/polygon_set_data.hpp:798:7: required from 'void boost::polygon::polygon_set_data&lt;T&gt;::get_fracture(output_container&amp;, bool, concept_type) const [with output_container = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; concept_type = boost::polygon::polygon_concept; T = int]' /usr/include/boost/polygon/polygon_set_data.hpp:781:37: required from 'void boost::polygon::polygon_set_data&lt;T&gt;::get_dispatch(output_container&amp;, boost::polygon::polygon_concept) const [with output_container = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; T = int]' /usr/include/boost/polygon/polygon_set_data.hpp:233:100: required from 'void boost::polygon::polygon_set_data&lt;T&gt;::get(output_container&amp;) const [with output_container = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; T = int]' t.cpp:11:15: required from here /usr/include/boost/polygon/polygon_traits.hpp:513:3: note: template&lt;class T1, class T2&gt; typename boost::enable_if&lt;typename boost::polygon::gtl_and&lt;typename boost::polygon::is_mutable_polygon_type&lt;T&gt;::type, typename boost::polygon::is_polygon_type&lt;T2&gt;::type&gt;::type, T1&gt;::type&amp; boost::polygon::assign(T1&amp;, const T2&amp;) assign(T1&amp; lvalue, const T2&amp; rvalue) { ^ /usr/include/boost/polygon/polygon_traits.hpp:513:3: note: template argument deduction/substitution failed: /usr/include/boost/polygon/polygon_traits.hpp: In substitution of 'template&lt;class T1, class T2&gt; typename boost::enable_if&lt;typename boost::polygon::gtl_and&lt;typename boost::polygon::is_mutable_polygon_type&lt;T&gt;::type, typename boost::polygon::is_polygon_type&lt;T2&gt;::type&gt;::type, T1&gt;::type&amp; boost::polygon::assign(T1&amp;, const T2&amp;) [with T1 = boost::polygon::point_data&lt;int&gt;; T2 = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;]': /usr/include/boost/polygon/point_data.hpp:55:23: required from 'boost::polygon::point_data&lt;T&gt;&amp; boost::polygon::point_data&lt;T&gt;::operator=(const PointType&amp;) [with PointType = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;; T = int]' /usr/include/boost/polygon/point_data.hpp:50:11: required from 'boost::polygon::point_data&lt;T&gt;::point_data(const PointType&amp;) [with PointType = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;; T = int]' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/bits/stl_pair.h:125:39: required from 'constexpr std::pair&lt;_T1, _T2&gt;::pair(const std::pair&lt;_U1, _U2&gt;&amp;) [with _U1 = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;; _U2 = int; &lt;template-parameter-2-3&gt; = void; _T1 = boost::polygon::point_data&lt;int&gt;; _T2 = boost::polygon::point_data&lt;int&gt;]' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/type_traits:1305:35: required by substitution of 'template&lt;class _From1, class _To1&gt; static decltype ((__test_aux&lt;_To1&gt;(declval&lt;_From1&gt;()), std::__sfinae_types::__one())) std::__is_convertible_helper&lt;_From, _To, false&gt;::__test(int) [with _From1 = _From1; _To1 = _To1; _From = const std::pair&lt;std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, int&gt;&amp;; _To = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;] [with _From1 = const std::pair&lt;std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, int&gt;&amp;; _To1 = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;]' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/type_traits:1312:50: required from 'constexpr const bool std::__is_convertible_helper&lt;const std::pair&lt;std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, int&gt;&amp;, std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, false&gt;::value' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/type_traits:1317:12: [ skipping 20 instantiation contexts, use -ftemplate-backtrace-limit=0 to disable ] /usr/include/boost/polygon/detail/polygon_arbitrary_formation.hpp:1682:11: required from 'iT boost::polygon::polygon_arbitrary_formation&lt;Unit&gt;::processEvent_(cT&amp;, iT, iT) [with cT = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; iT = __gnu_cxx::__normal_iterator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge*, std::vector&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge, std::allocator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge&gt; &gt; &gt;; Unit = int]' /usr/include/boost/polygon/detail/polygon_arbitrary_formation.hpp:1361:64: required from 'void boost::polygon::polygon_arbitrary_formation&lt;Unit&gt;::scan(cT&amp;, iT, iT) [with cT = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; iT = __gnu_cxx::__normal_iterator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge*, std::vector&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge, std::allocator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge&gt; &gt; &gt;; Unit = int]' /usr/include/boost/polygon/polygon_set_data.hpp:798:7: required from 'void boost::polygon::polygon_set_data&lt;T&gt;::get_fracture(output_container&amp;, bool, concept_type) const [with output_container = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; concept_type = boost::polygon::polygon_concept; T = int]' /usr/include/boost/polygon/polygon_set_data.hpp:781:37: required from 'void boost::polygon::polygon_set_data&lt;T&gt;::get_dispatch(output_container&amp;, boost::polygon::polygon_concept) const [with output_container = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; T = int]' /usr/include/boost/polygon/polygon_set_data.hpp:233:100: required from 'void boost::polygon::polygon_set_data&lt;T&gt;::get(output_container&amp;) const [with output_container = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; T = int]' t.cpp:11:15: required from here /usr/include/boost/polygon/polygon_traits.hpp:513:3: error: no type named 'type' in 'struct boost::enable_if&lt;mpl_::bool_&lt;false&gt;, boost::polygon::point_data&lt;int&gt; &gt;' In file included from /usr/include/boost/polygon/segment_data.hpp:16:0, from /usr/include/boost/polygon/polygon.hpp:32, from t.cpp:3: /usr/include/boost/polygon/point_data.hpp: In instantiation of 'boost::polygon::point_data&lt;T&gt;&amp; boost::polygon::point_data&lt;T&gt;::operator=(const PointType&amp;) [with PointType = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;; T = int]': /usr/include/boost/polygon/point_data.hpp:50:11: required from 'boost::polygon::point_data&lt;T&gt;::point_data(const PointType&amp;) [with PointType = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;; T = int]' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/bits/stl_pair.h:125:39: required from 'constexpr std::pair&lt;_T1, _T2&gt;::pair(const std::pair&lt;_U1, _U2&gt;&amp;) [with _U1 = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;; _U2 = int; &lt;template-parameter-2-3&gt; = void; _T1 = boost::polygon::point_data&lt;int&gt;; _T2 = boost::polygon::point_data&lt;int&gt;]' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/type_traits:1305:35: required by substitution of 'template&lt;class _From1, class _To1&gt; static decltype ((__test_aux&lt;_To1&gt;(declval&lt;_From1&gt;()), std::__sfinae_types::__one())) std::__is_convertible_helper&lt;_From, _To, false&gt;::__test(int) [with _From1 = _From1; _To1 = _To1; _From = const std::pair&lt;std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, int&gt;&amp;; _To = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;] [with _From1 = const std::pair&lt;std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, int&gt;&amp;; _To1 = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;]' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/type_traits:1312:50: required from 'constexpr const bool std::__is_convertible_helper&lt;const std::pair&lt;std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, int&gt;&amp;, std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, false&gt;::value' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/type_traits:1317:12: required from 'struct std::is_convertible&lt;const std::pair&lt;std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, int&gt;&amp;, std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt; &gt;' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/type_traits:116:12: [ skipping 19 instantiation contexts, use -ftemplate-backtrace-limit=0 to disable ] /usr/include/boost/polygon/detail/polygon_arbitrary_formation.hpp:1682:11: required from 'iT boost::polygon::polygon_arbitrary_formation&lt;Unit&gt;::processEvent_(cT&amp;, iT, iT) [with cT = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; iT = __gnu_cxx::__normal_iterator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge*, std::vector&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge, std::allocator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge&gt; &gt; &gt;; Unit = int]' /usr/include/boost/polygon/detail/polygon_arbitrary_formation.hpp:1361:64: required from 'void boost::polygon::polygon_arbitrary_formation&lt;Unit&gt;::scan(cT&amp;, iT, iT) [with cT = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; iT = __gnu_cxx::__normal_iterator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge*, std::vector&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge, std::allocator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge&gt; &gt; &gt;; Unit = int]' /usr/include/boost/polygon/polygon_set_data.hpp:798:7: required from 'void boost::polygon::polygon_set_data&lt;T&gt;::get_fracture(output_container&amp;, bool, concept_type) const [with output_container = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; concept_type = boost::polygon::polygon_concept; T = int]' /usr/include/boost/polygon/polygon_set_data.hpp:781:37: required from 'void boost::polygon::polygon_set_data&lt;T&gt;::get_dispatch(output_container&amp;, boost::polygon::polygon_concept) const [with output_container = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; T = int]' /usr/include/boost/polygon/polygon_set_data.hpp:233:100: required from 'void boost::polygon::polygon_set_data&lt;T&gt;::get(output_container&amp;) const [with output_container = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; T = int]' t.cpp:11:15: required from here /usr/include/boost/polygon/segment_concept.hpp:188:18: note: template&lt;class Segment1, class Segment2&gt; typename boost::enable_if&lt;typename boost::polygon::gtl_and_3&lt;boost::polygon::y_s_assign, typename boost::polygon::is_mutable_segment_concept&lt;typename boost::polygon::geometry_concept&lt;T&gt;::type&gt;::type, typename boost::polygon::is_segment_concept&lt;typename boost::polygon::geometry_concept&lt;PointType2&gt;::type&gt;::type&gt;::type, Segment1&gt;::type&amp; boost::polygon::assign(Segment1&amp;, const Segment2&amp;) Segment1&gt;::type&amp; assign(Segment1&amp; segment1, const Segment2&amp; segment2) { ^ /usr/include/boost/polygon/segment_concept.hpp:188:18: note: template argument deduction/substitution failed: /usr/include/boost/polygon/segment_concept.hpp: In substitution of 'template&lt;class Segment1, class Segment2&gt; typename boost::enable_if&lt;typename boost::polygon::gtl_and_3&lt;boost::polygon::y_s_assign, typename boost::polygon::is_mutable_segment_concept&lt;typename boost::polygon::geometry_concept&lt;T&gt;::type&gt;::type, typename boost::polygon::is_segment_concept&lt;typename boost::polygon::geometry_concept&lt;PointType2&gt;::type&gt;::type&gt;::type, Segment1&gt;::type&amp; boost::polygon::assign(Segment1&amp;, const Segment2&amp;) [with Segment1 = boost::polygon::point_data&lt;int&gt;; Segment2 = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;]': /usr/include/boost/polygon/point_data.hpp:55:23: required from 'boost::polygon::point_data&lt;T&gt;&amp; boost::polygon::point_data&lt;T&gt;::operator=(const PointType&amp;) [with PointType = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;; T = int]' /usr/include/boost/polygon/point_data.hpp:50:11: required from 'boost::polygon::point_data&lt;T&gt;::point_data(const PointType&amp;) [with PointType = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;; T = int]' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/bits/stl_pair.h:125:39: required from 'constexpr std::pair&lt;_T1, _T2&gt;::pair(const std::pair&lt;_U1, _U2&gt;&amp;) [with _U1 = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;; _U2 = int; &lt;template-parameter-2-3&gt; = void; _T1 = boost::polygon::point_data&lt;int&gt;; _T2 = boost::polygon::point_data&lt;int&gt;]' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/type_traits:1305:35: required by substitution of 'template&lt;class _From1, class _To1&gt; static decltype ((__test_aux&lt;_To1&gt;(declval&lt;_From1&gt;()), std::__sfinae_types::__one())) std::__is_convertible_helper&lt;_From, _To, false&gt;::__test(int) [with _From1 = _From1; _To1 = _To1; _From = const std::pair&lt;std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, int&gt;&amp;; _To = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;] [with _From1 = const std::pair&lt;std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, int&gt;&amp;; _To1 = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;]' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/type_traits:1312:50: required from 'constexpr const bool std::__is_convertible_helper&lt;const std::pair&lt;std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, int&gt;&amp;, std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, false&gt;::value' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/type_traits:1317:12: [ skipping 20 instantiation contexts, use -ftemplate-backtrace-limit=0 to disable ] /usr/include/boost/polygon/detail/polygon_arbitrary_formation.hpp:1682:11: required from 'iT boost::polygon::polygon_arbitrary_formation&lt;Unit&gt;::processEvent_(cT&amp;, iT, iT) [with cT = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; iT = __gnu_cxx::__normal_iterator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge*, std::vector&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge, std::allocator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge&gt; &gt; &gt;; Unit = int]' /usr/include/boost/polygon/detail/polygon_arbitrary_formation.hpp:1361:64: required from 'void boost::polygon::polygon_arbitrary_formation&lt;Unit&gt;::scan(cT&amp;, iT, iT) [with cT = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; iT = __gnu_cxx::__normal_iterator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge*, std::vector&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge, std::allocator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge&gt; &gt; &gt;; Unit = int]' /usr/include/boost/polygon/polygon_set_data.hpp:798:7: required from 'void boost::polygon::polygon_set_data&lt;T&gt;::get_fracture(output_container&amp;, bool, concept_type) const [with output_container = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; concept_type = boost::polygon::polygon_concept; T = int]' /usr/include/boost/polygon/polygon_set_data.hpp:781:37: required from 'void boost::polygon::polygon_set_data&lt;T&gt;::get_dispatch(output_container&amp;, boost::polygon::polygon_concept) const [with output_container = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; T = int]' /usr/include/boost/polygon/polygon_set_data.hpp:233:100: required from 'void boost::polygon::polygon_set_data&lt;T&gt;::get(output_container&amp;) const [with output_container = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; T = int]' t.cpp:11:15: required from here /usr/include/boost/polygon/segment_concept.hpp:188:18: error: no type named 'type' in 'struct boost::enable_if&lt;mpl_::bool_&lt;false&gt;, boost::polygon::point_data&lt;int&gt; &gt;' In file included from /usr/include/boost/polygon/polygon.hpp:29:0, from t.cpp:3: /usr/include/boost/polygon/point_data.hpp: In instantiation of 'boost::polygon::point_data&lt;T&gt;&amp; boost::polygon::point_data&lt;T&gt;::operator=(const PointType&amp;) [with PointType = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;; T = int]': /usr/include/boost/polygon/point_data.hpp:50:11: required from 'boost::polygon::point_data&lt;T&gt;::point_data(const PointType&amp;) [with PointType = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;; T = int]' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/bits/stl_pair.h:125:39: required from 'constexpr std::pair&lt;_T1, _T2&gt;::pair(const std::pair&lt;_U1, _U2&gt;&amp;) [with _U1 = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;; _U2 = int; &lt;template-parameter-2-3&gt; = void; _T1 = boost::polygon::point_data&lt;int&gt;; _T2 = boost::polygon::point_data&lt;int&gt;]' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/type_traits:1305:35: required by substitution of 'template&lt;class _From1, class _To1&gt; static decltype ((__test_aux&lt;_To1&gt;(declval&lt;_From1&gt;()), std::__sfinae_types::__one())) std::__is_convertible_helper&lt;_From, _To, false&gt;::__test(int) [with _From1 = _From1; _To1 = _To1; _From = const std::pair&lt;std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, int&gt;&amp;; _To = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;] [with _From1 = const std::pair&lt;std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, int&gt;&amp;; _To1 = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;]' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/type_traits:1312:50: required from 'constexpr const bool std::__is_convertible_helper&lt;const std::pair&lt;std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, int&gt;&amp;, std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, false&gt;::value' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/type_traits:1317:12: required from 'struct std::is_convertible&lt;const std::pair&lt;std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, int&gt;&amp;, std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt; &gt;' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/type_traits:116:12: [ skipping 19 instantiation contexts, use -ftemplate-backtrace-limit=0 to disable ] /usr/include/boost/polygon/detail/polygon_arbitrary_formation.hpp:1682:11: required from 'iT boost::polygon::polygon_arbitrary_formation&lt;Unit&gt;::processEvent_(cT&amp;, iT, iT) [with cT = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; iT = __gnu_cxx::__normal_iterator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge*, std::vector&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge, std::allocator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge&gt; &gt; &gt;; Unit = int]' /usr/include/boost/polygon/detail/polygon_arbitrary_formation.hpp:1361:64: required from 'void boost::polygon::polygon_arbitrary_formation&lt;Unit&gt;::scan(cT&amp;, iT, iT) [with cT = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; iT = __gnu_cxx::__normal_iterator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge*, std::vector&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge, std::allocator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge&gt; &gt; &gt;; Unit = int]' /usr/include/boost/polygon/polygon_set_data.hpp:798:7: required from 'void boost::polygon::polygon_set_data&lt;T&gt;::get_fracture(output_container&amp;, bool, concept_type) const [with output_container = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; concept_type = boost::polygon::polygon_concept; T = int]' /usr/include/boost/polygon/polygon_set_data.hpp:781:37: required from 'void boost::polygon::polygon_set_data&lt;T&gt;::get_dispatch(output_container&amp;, boost::polygon::polygon_concept) const [with output_container = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; T = int]' /usr/include/boost/polygon/polygon_set_data.hpp:233:100: required from 'void boost::polygon::polygon_set_data&lt;T&gt;::get(output_container&amp;) const [with output_container = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; T = int]' t.cpp:11:15: required from here /usr/include/boost/polygon/rectangle_concept.hpp:192:3: note: template&lt;class rectangle_type_1, class rectangle_type_2&gt; typename boost::enable_if&lt;typename boost::polygon::gtl_and_3&lt;boost::polygon::y_r_assign, typename boost::polygon::is_mutable_rectangle_concept&lt;typename boost::polygon::geometry_concept&lt;T&gt;::type&gt;::type, typename boost::polygon::is_rectangle_concept&lt;typename boost::polygon::geometry_concept&lt;PointType2&gt;::type&gt;::type&gt;::type, rectangle_type_1&gt;::type&amp; boost::polygon::assign(rectangle_type_1&amp;, const rectangle_type_2&amp;) assign(rectangle_type_1&amp; lvalue, const rectangle_type_2&amp; rvalue) { ^ /usr/include/boost/polygon/rectangle_concept.hpp:192:3: note: template argument deduction/substitution failed: /usr/include/boost/polygon/rectangle_concept.hpp: In substitution of 'template&lt;class rectangle_type_1, class rectangle_type_2&gt; typename boost::enable_if&lt;typename boost::polygon::gtl_and_3&lt;boost::polygon::y_r_assign, typename boost::polygon::is_mutable_rectangle_concept&lt;typename boost::polygon::geometry_concept&lt;T&gt;::type&gt;::type, typename boost::polygon::is_rectangle_concept&lt;typename boost::polygon::geometry_concept&lt;PointType2&gt;::type&gt;::type&gt;::type, rectangle_type_1&gt;::type&amp; boost::polygon::assign(rectangle_type_1&amp;, const rectangle_type_2&amp;) [with rectangle_type_1 = boost::polygon::point_data&lt;int&gt;; rectangle_type_2 = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;]': /usr/include/boost/polygon/point_data.hpp:55:23: required from 'boost::polygon::point_data&lt;T&gt;&amp; boost::polygon::point_data&lt;T&gt;::operator=(const PointType&amp;) [with PointType = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;; T = int]' /usr/include/boost/polygon/point_data.hpp:50:11: required from 'boost::polygon::point_data&lt;T&gt;::point_data(const PointType&amp;) [with PointType = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;; T = int]' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/bits/stl_pair.h:125:39: required from 'constexpr std::pair&lt;_T1, _T2&gt;::pair(const std::pair&lt;_U1, _U2&gt;&amp;) [with _U1 = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;; _U2 = int; &lt;template-parameter-2-3&gt; = void; _T1 = boost::polygon::point_data&lt;int&gt;; _T2 = boost::polygon::point_data&lt;int&gt;]' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/type_traits:1305:35: required by substitution of 'template&lt;class _From1, class _To1&gt; static decltype ((__test_aux&lt;_To1&gt;(declval&lt;_From1&gt;()), std::__sfinae_types::__one())) std::__is_convertible_helper&lt;_From, _To, false&gt;::__test(int) [with _From1 = _From1; _To1 = _To1; _From = const std::pair&lt;std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, int&gt;&amp;; _To = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;] [with _From1 = const std::pair&lt;std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, int&gt;&amp;; _To1 = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;]' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/type_traits:1312:50: required from 'constexpr const bool std::__is_convertible_helper&lt;const std::pair&lt;std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, int&gt;&amp;, std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, false&gt;::value' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/type_traits:1317:12: [ skipping 20 instantiation contexts, use -ftemplate-backtrace-limit=0 to disable ] /usr/include/boost/polygon/detail/polygon_arbitrary_formation.hpp:1682:11: required from 'iT boost::polygon::polygon_arbitrary_formation&lt;Unit&gt;::processEvent_(cT&amp;, iT, iT) [with cT = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; iT = __gnu_cxx::__normal_iterator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge*, std::vector&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge, std::allocator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge&gt; &gt; &gt;; Unit = int]' /usr/include/boost/polygon/detail/polygon_arbitrary_formation.hpp:1361:64: required from 'void boost::polygon::polygon_arbitrary_formation&lt;Unit&gt;::scan(cT&amp;, iT, iT) [with cT = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; iT = __gnu_cxx::__normal_iterator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge*, std::vector&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge, std::allocator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge&gt; &gt; &gt;; Unit = int]' /usr/include/boost/polygon/polygon_set_data.hpp:798:7: required from 'void boost::polygon::polygon_set_data&lt;T&gt;::get_fracture(output_container&amp;, bool, concept_type) const [with output_container = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; concept_type = boost::polygon::polygon_concept; T = int]' /usr/include/boost/polygon/polygon_set_data.hpp:781:37: required from 'void boost::polygon::polygon_set_data&lt;T&gt;::get_dispatch(output_container&amp;, boost::polygon::polygon_concept) const [with output_container = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; T = int]' /usr/include/boost/polygon/polygon_set_data.hpp:233:100: required from 'void boost::polygon::polygon_set_data&lt;T&gt;::get(output_container&amp;) const [with output_container = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; T = int]' t.cpp:11:15: required from here /usr/include/boost/polygon/rectangle_concept.hpp:192:3: error: no type named 'type' in 'struct boost::enable_if&lt;mpl_::bool_&lt;false&gt;, boost::polygon::point_data&lt;int&gt; &gt;' In file included from /usr/include/boost/polygon/interval_data.hpp:16:0, from /usr/include/boost/polygon/polygon.hpp:22, from t.cpp:3: /usr/include/boost/polygon/point_data.hpp: In instantiation of 'boost::polygon::point_data&lt;T&gt;&amp; boost::polygon::point_data&lt;T&gt;::operator=(const PointType&amp;) [with PointType = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;; T = int]': /usr/include/boost/polygon/point_data.hpp:50:11: required from 'boost::polygon::point_data&lt;T&gt;::point_data(const PointType&amp;) [with PointType = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;; T = int]' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/bits/stl_pair.h:125:39: required from 'constexpr std::pair&lt;_T1, _T2&gt;::pair(const std::pair&lt;_U1, _U2&gt;&amp;) [with _U1 = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;; _U2 = int; &lt;template-parameter-2-3&gt; = void; _T1 = boost::polygon::point_data&lt;int&gt;; _T2 = boost::polygon::point_data&lt;int&gt;]' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/type_traits:1305:35: required by substitution of 'template&lt;class _From1, class _To1&gt; static decltype ((__test_aux&lt;_To1&gt;(declval&lt;_From1&gt;()), std::__sfinae_types::__one())) std::__is_convertible_helper&lt;_From, _To, false&gt;::__test(int) [with _From1 = _From1; _To1 = _To1; _From = const std::pair&lt;std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, int&gt;&amp;; _To = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;] [with _From1 = const std::pair&lt;std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, int&gt;&amp;; _To1 = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;]' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/type_traits:1312:50: required from 'constexpr const bool std::__is_convertible_helper&lt;const std::pair&lt;std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, int&gt;&amp;, std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, false&gt;::value' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/type_traits:1317:12: required from 'struct std::is_convertible&lt;const std::pair&lt;std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, int&gt;&amp;, std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt; &gt;' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/type_traits:116:12: [ skipping 19 instantiation contexts, use -ftemplate-backtrace-limit=0 to disable ] /usr/include/boost/polygon/detail/polygon_arbitrary_formation.hpp:1682:11: required from 'iT boost::polygon::polygon_arbitrary_formation&lt;Unit&gt;::processEvent_(cT&amp;, iT, iT) [with cT = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; iT = __gnu_cxx::__normal_iterator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge*, std::vector&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge, std::allocator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge&gt; &gt; &gt;; Unit = int]' /usr/include/boost/polygon/detail/polygon_arbitrary_formation.hpp:1361:64: required from 'void boost::polygon::polygon_arbitrary_formation&lt;Unit&gt;::scan(cT&amp;, iT, iT) [with cT = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; iT = __gnu_cxx::__normal_iterator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge*, std::vector&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge, std::allocator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge&gt; &gt; &gt;; Unit = int]' /usr/include/boost/polygon/polygon_set_data.hpp:798:7: required from 'void boost::polygon::polygon_set_data&lt;T&gt;::get_fracture(output_container&amp;, bool, concept_type) const [with output_container = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; concept_type = boost::polygon::polygon_concept; T = int]' /usr/include/boost/polygon/polygon_set_data.hpp:781:37: required from 'void boost::polygon::polygon_set_data&lt;T&gt;::get_dispatch(output_container&amp;, boost::polygon::polygon_concept) const [with output_container = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; T = int]' /usr/include/boost/polygon/polygon_set_data.hpp:233:100: required from 'void boost::polygon::polygon_set_data&lt;T&gt;::get(output_container&amp;) const [with output_container = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; T = int]' t.cpp:11:15: required from here /usr/include/boost/polygon/interval_concept.hpp:168:10: note: template&lt;class IntervalType1, class IntervalType2&gt; typename boost::enable_if&lt;typename boost::polygon::gtl_and_3&lt;boost::polygon::y_i_assign, typename boost::polygon::is_mutable_interval_concept&lt;typename boost::polygon::geometry_concept&lt;T&gt;::type&gt;::type, typename boost::polygon::is_interval_concept&lt;typename boost::polygon::geometry_concept&lt;PointType2&gt;::type&gt;::type&gt;::type, IntervalType1&gt;::type&amp; boost::polygon::assign(IntervalType1&amp;, const IntervalType2&amp;) &gt;::type&amp; assign(IntervalType1&amp; lvalue, const IntervalType2&amp; rvalue) { ^ /usr/include/boost/polygon/interval_concept.hpp:168:10: note: template argument deduction/substitution failed: /usr/include/boost/polygon/interval_concept.hpp: In substitution of 'template&lt;class IntervalType1, class IntervalType2&gt; typename boost::enable_if&lt;typename boost::polygon::gtl_and_3&lt;boost::polygon::y_i_assign, typename boost::polygon::is_mutable_interval_concept&lt;typename boost::polygon::geometry_concept&lt;T&gt;::type&gt;::type, typename boost::polygon::is_interval_concept&lt;typename boost::polygon::geometry_concept&lt;PointType2&gt;::type&gt;::type&gt;::type, IntervalType1&gt;::type&amp; boost::polygon::assign(IntervalType1&amp;, const IntervalType2&amp;) [with IntervalType1 = boost::polygon::point_data&lt;int&gt;; IntervalType2 = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;]': /usr/include/boost/polygon/point_data.hpp:55:23: required from 'boost::polygon::point_data&lt;T&gt;&amp; boost::polygon::point_data&lt;T&gt;::operator=(const PointType&amp;) [with PointType = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;; T = int]' /usr/include/boost/polygon/point_data.hpp:50:11: required from 'boost::polygon::point_data&lt;T&gt;::point_data(const PointType&amp;) [with PointType = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;; T = int]' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/bits/stl_pair.h:125:39: required from 'constexpr std::pair&lt;_T1, _T2&gt;::pair(const std::pair&lt;_U1, _U2&gt;&amp;) [with _U1 = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;; _U2 = int; &lt;template-parameter-2-3&gt; = void; _T1 = boost::polygon::point_data&lt;int&gt;; _T2 = boost::polygon::point_data&lt;int&gt;]' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/type_traits:1305:35: required by substitution of 'template&lt;class _From1, class _To1&gt; static decltype ((__test_aux&lt;_To1&gt;(declval&lt;_From1&gt;()), std::__sfinae_types::__one())) std::__is_convertible_helper&lt;_From, _To, false&gt;::__test(int) [with _From1 = _From1; _To1 = _To1; _From = const std::pair&lt;std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, int&gt;&amp;; _To = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;] [with _From1 = const std::pair&lt;std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, int&gt;&amp;; _To1 = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;]' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/type_traits:1312:50: required from 'constexpr const bool std::__is_convertible_helper&lt;const std::pair&lt;std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, int&gt;&amp;, std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, false&gt;::value' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/type_traits:1317:12: [ skipping 20 instantiation contexts, use -ftemplate-backtrace-limit=0 to disable ] /usr/include/boost/polygon/detail/polygon_arbitrary_formation.hpp:1682:11: required from 'iT boost::polygon::polygon_arbitrary_formation&lt;Unit&gt;::processEvent_(cT&amp;, iT, iT) [with cT = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; iT = __gnu_cxx::__normal_iterator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge*, std::vector&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge, std::allocator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge&gt; &gt; &gt;; Unit = int]' /usr/include/boost/polygon/detail/polygon_arbitrary_formation.hpp:1361:64: required from 'void boost::polygon::polygon_arbitrary_formation&lt;Unit&gt;::scan(cT&amp;, iT, iT) [with cT = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; iT = __gnu_cxx::__normal_iterator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge*, std::vector&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge, std::allocator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge&gt; &gt; &gt;; Unit = int]' /usr/include/boost/polygon/polygon_set_data.hpp:798:7: required from 'void boost::polygon::polygon_set_data&lt;T&gt;::get_fracture(output_container&amp;, bool, concept_type) const [with output_container = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; concept_type = boost::polygon::polygon_concept; T = int]' /usr/include/boost/polygon/polygon_set_data.hpp:781:37: required from 'void boost::polygon::polygon_set_data&lt;T&gt;::get_dispatch(output_container&amp;, boost::polygon::polygon_concept) const [with output_container = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; T = int]' /usr/include/boost/polygon/polygon_set_data.hpp:233:100: required from 'void boost::polygon::polygon_set_data&lt;T&gt;::get(output_container&amp;) const [with output_container = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; T = int]' t.cpp:11:15: required from here /usr/include/boost/polygon/interval_concept.hpp:168:10: error: no type named 'type' in 'struct boost::enable_if&lt;mpl_::bool_&lt;false&gt;, boost::polygon::point_data&lt;int&gt; &gt;' In file included from /usr/include/boost/polygon/polygon.hpp:15:0, from t.cpp:3: /usr/include/boost/polygon/point_data.hpp: In instantiation of 'boost::polygon::point_data&lt;T&gt;&amp; boost::polygon::point_data&lt;T&gt;::operator=(const PointType&amp;) [with PointType = int; T = int]': /usr/include/boost/polygon/point_data.hpp:50:11: required from 'boost::polygon::point_data&lt;T&gt;::point_data(const PointType&amp;) [with PointType = int; T = int]' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/bits/stl_pair.h:125:39: required from 'constexpr std::pair&lt;_T1, _T2&gt;::pair(const std::pair&lt;_U1, _U2&gt;&amp;) [with _U1 = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;; _U2 = int; &lt;template-parameter-2-3&gt; = void; _T1 = boost::polygon::point_data&lt;int&gt;; _T2 = boost::polygon::point_data&lt;int&gt;]' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/type_traits:1305:35: required by substitution of 'template&lt;class _From1, class _To1&gt; static decltype ((__test_aux&lt;_To1&gt;(declval&lt;_From1&gt;()), std::__sfinae_types::__one())) std::__is_convertible_helper&lt;_From, _To, false&gt;::__test(int) [with _From1 = _From1; _To1 = _To1; _From = const std::pair&lt;std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, int&gt;&amp;; _To = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;] [with _From1 = const std::pair&lt;std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, int&gt;&amp;; _To1 = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;]' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/type_traits:1312:50: required from 'constexpr const bool std::__is_convertible_helper&lt;const std::pair&lt;std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, int&gt;&amp;, std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, false&gt;::value' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/type_traits:1317:12: required from 'struct std::is_convertible&lt;const std::pair&lt;std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, int&gt;&amp;, std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt; &gt;' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/type_traits:116:12: [ skipping 19 instantiation contexts, use -ftemplate-backtrace-limit=0 to disable ] /usr/include/boost/polygon/detail/polygon_arbitrary_formation.hpp:1682:11: required from 'iT boost::polygon::polygon_arbitrary_formation&lt;Unit&gt;::processEvent_(cT&amp;, iT, iT) [with cT = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; iT = __gnu_cxx::__normal_iterator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge*, std::vector&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge, std::allocator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge&gt; &gt; &gt;; Unit = int]' /usr/include/boost/polygon/detail/polygon_arbitrary_formation.hpp:1361:64: required from 'void boost::polygon::polygon_arbitrary_formation&lt;Unit&gt;::scan(cT&amp;, iT, iT) [with cT = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; iT = __gnu_cxx::__normal_iterator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge*, std::vector&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge, std::allocator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge&gt; &gt; &gt;; Unit = int]' /usr/include/boost/polygon/polygon_set_data.hpp:798:7: required from 'void boost::polygon::polygon_set_data&lt;T&gt;::get_fracture(output_container&amp;, bool, concept_type) const [with output_container = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; concept_type = boost::polygon::polygon_concept; T = int]' /usr/include/boost/polygon/polygon_set_data.hpp:781:37: required from 'void boost::polygon::polygon_set_data&lt;T&gt;::get_dispatch(output_container&amp;, boost::polygon::polygon_concept) const [with output_container = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; T = int]' /usr/include/boost/polygon/polygon_set_data.hpp:233:100: required from 'void boost::polygon::polygon_set_data&lt;T&gt;::get(output_container&amp;) const [with output_container = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; T = int]' t.cpp:11:15: required from here /usr/include/boost/polygon/point_data.hpp:55:23: error: no matching function for call to 'assign(boost::polygon::point_data&lt;int&gt;&amp;, const int&amp;)' assign(*this, that); ^ /usr/include/boost/polygon/point_data.hpp:55:23: note: candidates are: In file included from /usr/include/boost/polygon/point_data.hpp:16:0, from /usr/include/boost/polygon/polygon.hpp:15, from t.cpp:3: /usr/include/boost/polygon/point_concept.hpp:167:20: note: template&lt;class PointType1, class PointType2&gt; typename boost::enable_if&lt;typename boost::polygon::gtl_and_3&lt;boost::polygon::y_pt_assign, typename boost::polygon::is_mutable_point_concept&lt;typename boost::polygon::geometry_concept&lt;T&gt;::type&gt;::type, typename boost::polygon::is_point_concept&lt;typename boost::polygon::geometry_concept&lt;PointType2&gt;::type&gt;::type&gt;::type, PointType1&gt;::type&amp; boost::polygon::assign(PointType1&amp;, const PointType2&amp;) PointType1&gt;::type&amp; assign(PointType1&amp; lvalue, const PointType2&amp; rvalue) { ^ /usr/include/boost/polygon/point_concept.hpp:167:20: note: template argument deduction/substitution failed: /usr/include/boost/polygon/point_concept.hpp: In substitution of 'template&lt;class PointType1, class PointType2&gt; typename boost::enable_if&lt;typename boost::polygon::gtl_and_3&lt;boost::polygon::y_pt_assign, typename boost::polygon::is_mutable_point_concept&lt;typename boost::polygon::geometry_concept&lt;T&gt;::type&gt;::type, typename boost::polygon::is_point_concept&lt;typename boost::polygon::geometry_concept&lt;PointType2&gt;::type&gt;::type&gt;::type, PointType1&gt;::type&amp; boost::polygon::assign(PointType1&amp;, const PointType2&amp;) [with PointType1 = boost::polygon::point_data&lt;int&gt;; PointType2 = int]': /usr/include/boost/polygon/point_data.hpp:55:23: required from 'boost::polygon::point_data&lt;T&gt;&amp; boost::polygon::point_data&lt;T&gt;::operator=(const PointType&amp;) [with PointType = int; T = int]' /usr/include/boost/polygon/point_data.hpp:50:11: required from 'boost::polygon::point_data&lt;T&gt;::point_data(const PointType&amp;) [with PointType = int; T = int]' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/bits/stl_pair.h:125:39: required from 'constexpr std::pair&lt;_T1, _T2&gt;::pair(const std::pair&lt;_U1, _U2&gt;&amp;) [with _U1 = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;; _U2 = int; &lt;template-parameter-2-3&gt; = void; _T1 = boost::polygon::point_data&lt;int&gt;; _T2 = boost::polygon::point_data&lt;int&gt;]' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/type_traits:1305:35: required by substitution of 'template&lt;class _From1, class _To1&gt; static decltype ((__test_aux&lt;_To1&gt;(declval&lt;_From1&gt;()), std::__sfinae_types::__one())) std::__is_convertible_helper&lt;_From, _To, false&gt;::__test(int) [with _From1 = _From1; _To1 = _To1; _From = const std::pair&lt;std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, int&gt;&amp;; _To = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;] [with _From1 = const std::pair&lt;std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, int&gt;&amp;; _To1 = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;]' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/type_traits:1312:50: required from 'constexpr const bool std::__is_convertible_helper&lt;const std::pair&lt;std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, int&gt;&amp;, std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, false&gt;::value' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/type_traits:1317:12: [ skipping 20 instantiation contexts, use -ftemplate-backtrace-limit=0 to disable ] /usr/include/boost/polygon/detail/polygon_arbitrary_formation.hpp:1682:11: required from 'iT boost::polygon::polygon_arbitrary_formation&lt;Unit&gt;::processEvent_(cT&amp;, iT, iT) [with cT = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; iT = __gnu_cxx::__normal_iterator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge*, std::vector&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge, std::allocator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge&gt; &gt; &gt;; Unit = int]' /usr/include/boost/polygon/detail/polygon_arbitrary_formation.hpp:1361:64: required from 'void boost::polygon::polygon_arbitrary_formation&lt;Unit&gt;::scan(cT&amp;, iT, iT) [with cT = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; iT = __gnu_cxx::__normal_iterator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge*, std::vector&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge, std::allocator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge&gt; &gt; &gt;; Unit = int]' /usr/include/boost/polygon/polygon_set_data.hpp:798:7: required from 'void boost::polygon::polygon_set_data&lt;T&gt;::get_fracture(output_container&amp;, bool, concept_type) const [with output_container = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; concept_type = boost::polygon::polygon_concept; T = int]' /usr/include/boost/polygon/polygon_set_data.hpp:781:37: required from 'void boost::polygon::polygon_set_data&lt;T&gt;::get_dispatch(output_container&amp;, boost::polygon::polygon_concept) const [with output_container = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; T = int]' /usr/include/boost/polygon/polygon_set_data.hpp:233:100: required from 'void boost::polygon::polygon_set_data&lt;T&gt;::get(output_container&amp;) const [with output_container = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; T = int]' t.cpp:11:15: required from here /usr/include/boost/polygon/point_concept.hpp:167:20: error: no type named 'type' in 'struct boost::enable_if&lt;mpl_::bool_&lt;false&gt;, boost::polygon::point_data&lt;int&gt; &gt;' In file included from /usr/include/boost/polygon/polygon_set_data.hpp:1001:0, from /usr/include/boost/polygon/polygon.hpp:81, from t.cpp:3: /usr/include/boost/polygon/point_data.hpp: In instantiation of 'boost::polygon::point_data&lt;T&gt;&amp; boost::polygon::point_data&lt;T&gt;::operator=(const PointType&amp;) [with PointType = int; T = int]': /usr/include/boost/polygon/point_data.hpp:50:11: required from 'boost::polygon::point_data&lt;T&gt;::point_data(const PointType&amp;) [with PointType = int; T = int]' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/bits/stl_pair.h:125:39: required from 'constexpr std::pair&lt;_T1, _T2&gt;::pair(const std::pair&lt;_U1, _U2&gt;&amp;) [with _U1 = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;; _U2 = int; &lt;template-parameter-2-3&gt; = void; _T1 = boost::polygon::point_data&lt;int&gt;; _T2 = boost::polygon::point_data&lt;int&gt;]' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/type_traits:1305:35: required by substitution of 'template&lt;class _From1, class _To1&gt; static decltype ((__test_aux&lt;_To1&gt;(declval&lt;_From1&gt;()), std::__sfinae_types::__one())) std::__is_convertible_helper&lt;_From, _To, false&gt;::__test(int) [with _From1 = _From1; _To1 = _To1; _From = const std::pair&lt;std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, int&gt;&amp;; _To = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;] [with _From1 = const std::pair&lt;std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, int&gt;&amp;; _To1 = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;]' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/type_traits:1312:50: required from 'constexpr const bool std::__is_convertible_helper&lt;const std::pair&lt;std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, int&gt;&amp;, std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, false&gt;::value' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/type_traits:1317:12: required from 'struct std::is_convertible&lt;const std::pair&lt;std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, int&gt;&amp;, std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt; &gt;' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/type_traits:116:12: [ skipping 19 instantiation contexts, use -ftemplate-backtrace-limit=0 to disable ] /usr/include/boost/polygon/detail/polygon_arbitrary_formation.hpp:1682:11: required from 'iT boost::polygon::polygon_arbitrary_formation&lt;Unit&gt;::processEvent_(cT&amp;, iT, iT) [with cT = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; iT = __gnu_cxx::__normal_iterator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge*, std::vector&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge, std::allocator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge&gt; &gt; &gt;; Unit = int]' /usr/include/boost/polygon/detail/polygon_arbitrary_formation.hpp:1361:64: required from 'void boost::polygon::polygon_arbitrary_formation&lt;Unit&gt;::scan(cT&amp;, iT, iT) [with cT = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; iT = __gnu_cxx::__normal_iterator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge*, std::vector&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge, std::allocator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge&gt; &gt; &gt;; Unit = int]' /usr/include/boost/polygon/polygon_set_data.hpp:798:7: required from 'void boost::polygon::polygon_set_data&lt;T&gt;::get_fracture(output_container&amp;, bool, concept_type) const [with output_container = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; concept_type = boost::polygon::polygon_concept; T = int]' /usr/include/boost/polygon/polygon_set_data.hpp:781:37: required from 'void boost::polygon::polygon_set_data&lt;T&gt;::get_dispatch(output_container&amp;, boost::polygon::polygon_concept) const [with output_container = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; T = int]' /usr/include/boost/polygon/polygon_set_data.hpp:233:100: required from 'void boost::polygon::polygon_set_data&lt;T&gt;::get(output_container&amp;) const [with output_container = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; T = int]' t.cpp:11:15: required from here /usr/include/boost/polygon/polygon_set_concept.hpp:51:3: note: template&lt;class polygon_set_type_1, class polygon_set_type_2&gt; typename boost::enable_if&lt;typename boost::polygon::gtl_and&lt;typename boost::polygon::is_mutable_polygon_set_type&lt;T&gt;::type, typename boost::polygon::is_any_polygon_set_type&lt;polygon_set_type_2&gt;::type&gt;::type, polygon_set_type_1&gt;::type&amp; boost::polygon::assign(polygon_set_type_1&amp;, const polygon_set_type_2&amp;) assign(polygon_set_type_1&amp; lvalue, const polygon_set_type_2&amp; rvalue) { ^ /usr/include/boost/polygon/polygon_set_concept.hpp:51:3: note: template argument deduction/substitution failed: /usr/include/boost/polygon/polygon_set_concept.hpp: In substitution of 'template&lt;class polygon_set_type_1, class polygon_set_type_2&gt; typename boost::enable_if&lt;typename boost::polygon::gtl_and&lt;typename boost::polygon::is_mutable_polygon_set_type&lt;T&gt;::type, typename boost::polygon::is_any_polygon_set_type&lt;polygon_set_type_2&gt;::type&gt;::type, polygon_set_type_1&gt;::type&amp; boost::polygon::assign(polygon_set_type_1&amp;, const polygon_set_type_2&amp;) [with polygon_set_type_1 = boost::polygon::point_data&lt;int&gt;; polygon_set_type_2 = int]': /usr/include/boost/polygon/point_data.hpp:55:23: required from 'boost::polygon::point_data&lt;T&gt;&amp; boost::polygon::point_data&lt;T&gt;::operator=(const PointType&amp;) [with PointType = int; T = int]' /usr/include/boost/polygon/point_data.hpp:50:11: required from 'boost::polygon::point_data&lt;T&gt;::point_data(const PointType&amp;) [with PointType = int; T = int]' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/bits/stl_pair.h:125:39: required from 'constexpr std::pair&lt;_T1, _T2&gt;::pair(const std::pair&lt;_U1, _U2&gt;&amp;) [with _U1 = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;; _U2 = int; &lt;template-parameter-2-3&gt; = void; _T1 = boost::polygon::point_data&lt;int&gt;; _T2 = boost::polygon::point_data&lt;int&gt;]' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/type_traits:1305:35: required by substitution of 'template&lt;class _From1, class _To1&gt; static decltype ((__test_aux&lt;_To1&gt;(declval&lt;_From1&gt;()), std::__sfinae_types::__one())) std::__is_convertible_helper&lt;_From, _To, false&gt;::__test(int) [with _From1 = _From1; _To1 = _To1; _From = const std::pair&lt;std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, int&gt;&amp;; _To = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;] [with _From1 = const std::pair&lt;std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, int&gt;&amp;; _To1 = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;]' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/type_traits:1312:50: required from 'constexpr const bool std::__is_convertible_helper&lt;const std::pair&lt;std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, int&gt;&amp;, std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, false&gt;::value' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/type_traits:1317:12: [ skipping 20 instantiation contexts, use -ftemplate-backtrace-limit=0 to disable ] /usr/include/boost/polygon/detail/polygon_arbitrary_formation.hpp:1682:11: required from 'iT boost::polygon::polygon_arbitrary_formation&lt;Unit&gt;::processEvent_(cT&amp;, iT, iT) [with cT = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; iT = __gnu_cxx::__normal_iterator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge*, std::vector&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge, std::allocator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge&gt; &gt; &gt;; Unit = int]' /usr/include/boost/polygon/detail/polygon_arbitrary_formation.hpp:1361:64: required from 'void boost::polygon::polygon_arbitrary_formation&lt;Unit&gt;::scan(cT&amp;, iT, iT) [with cT = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; iT = __gnu_cxx::__normal_iterator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge*, std::vector&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge, std::allocator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge&gt; &gt; &gt;; Unit = int]' /usr/include/boost/polygon/polygon_set_data.hpp:798:7: required from 'void boost::polygon::polygon_set_data&lt;T&gt;::get_fracture(output_container&amp;, bool, concept_type) const [with output_container = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; concept_type = boost::polygon::polygon_concept; T = int]' /usr/include/boost/polygon/polygon_set_data.hpp:781:37: required from 'void boost::polygon::polygon_set_data&lt;T&gt;::get_dispatch(output_container&amp;, boost::polygon::polygon_concept) const [with output_container = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; T = int]' /usr/include/boost/polygon/polygon_set_data.hpp:233:100: required from 'void boost::polygon::polygon_set_data&lt;T&gt;::get(output_container&amp;) const [with output_container = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; T = int]' t.cpp:11:15: required from here /usr/include/boost/polygon/polygon_set_concept.hpp:51:3: error: no type named 'type' in 'struct boost::enable_if&lt;mpl_::bool_&lt;false&gt;, boost::polygon::point_data&lt;int&gt; &gt;' In file included from /usr/include/boost/polygon/polygon.hpp:76:0, from t.cpp:3: /usr/include/boost/polygon/point_data.hpp: In instantiation of 'boost::polygon::point_data&lt;T&gt;&amp; boost::polygon::point_data&lt;T&gt;::operator=(const PointType&amp;) [with PointType = int; T = int]': /usr/include/boost/polygon/point_data.hpp:50:11: required from 'boost::polygon::point_data&lt;T&gt;::point_data(const PointType&amp;) [with PointType = int; T = int]' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/bits/stl_pair.h:125:39: required from 'constexpr std::pair&lt;_T1, _T2&gt;::pair(const std::pair&lt;_U1, _U2&gt;&amp;) [with _U1 = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;; _U2 = int; &lt;template-parameter-2-3&gt; = void; _T1 = boost::polygon::point_data&lt;int&gt;; _T2 = boost::polygon::point_data&lt;int&gt;]' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/type_traits:1305:35: required by substitution of 'template&lt;class _From1, class _To1&gt; static decltype ((__test_aux&lt;_To1&gt;(declval&lt;_From1&gt;()), std::__sfinae_types::__one())) std::__is_convertible_helper&lt;_From, _To, false&gt;::__test(int) [with _From1 = _From1; _To1 = _To1; _From = const std::pair&lt;std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, int&gt;&amp;; _To = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;] [with _From1 = const std::pair&lt;std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, int&gt;&amp;; _To1 = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;]' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/type_traits:1312:50: required from 'constexpr const bool std::__is_convertible_helper&lt;const std::pair&lt;std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, int&gt;&amp;, std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, false&gt;::value' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/type_traits:1317:12: required from 'struct std::is_convertible&lt;const std::pair&lt;std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, int&gt;&amp;, std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt; &gt;' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/type_traits:116:12: [ skipping 19 instantiation contexts, use -ftemplate-backtrace-limit=0 to disable ] /usr/include/boost/polygon/detail/polygon_arbitrary_formation.hpp:1682:11: required from 'iT boost::polygon::polygon_arbitrary_formation&lt;Unit&gt;::processEvent_(cT&amp;, iT, iT) [with cT = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; iT = __gnu_cxx::__normal_iterator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge*, std::vector&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge, std::allocator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge&gt; &gt; &gt;; Unit = int]' /usr/include/boost/polygon/detail/polygon_arbitrary_formation.hpp:1361:64: required from 'void boost::polygon::polygon_arbitrary_formation&lt;Unit&gt;::scan(cT&amp;, iT, iT) [with cT = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; iT = __gnu_cxx::__normal_iterator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge*, std::vector&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge, std::allocator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge&gt; &gt; &gt;; Unit = int]' /usr/include/boost/polygon/polygon_set_data.hpp:798:7: required from 'void boost::polygon::polygon_set_data&lt;T&gt;::get_fracture(output_container&amp;, bool, concept_type) const [with output_container = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; concept_type = boost::polygon::polygon_concept; T = int]' /usr/include/boost/polygon/polygon_set_data.hpp:781:37: required from 'void boost::polygon::polygon_set_data&lt;T&gt;::get_dispatch(output_container&amp;, boost::polygon::polygon_concept) const [with output_container = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; T = int]' /usr/include/boost/polygon/polygon_set_data.hpp:233:100: required from 'void boost::polygon::polygon_set_data&lt;T&gt;::get(output_container&amp;) const [with output_container = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; T = int]' t.cpp:11:15: required from here /usr/include/boost/polygon/polygon_45_set_concept.hpp:51:3: note: template&lt;class polygon_set_type_1, class polygon_set_type_2&gt; typename boost::enable_if&lt;typename boost::polygon::gtl_and&lt;typename boost::polygon::gtl_if&lt;typename boost::polygon::is_mutable_polygon_45_set_type&lt;T&gt;::type&gt;::type, typename boost::polygon::gtl_if&lt;typename boost::polygon::is_polygon_45_or_90_set_type&lt;polygon_set_type_2&gt;::type&gt;::type&gt;::type, polygon_set_type_1&gt;::type&amp; boost::polygon::assign(polygon_set_type_1&amp;, const polygon_set_type_2&amp;) assign(polygon_set_type_1&amp; lvalue, const polygon_set_type_2&amp; rvalue) { ^ /usr/include/boost/polygon/polygon_45_set_concept.hpp:51:3: note: template argument deduction/substitution failed: /usr/include/boost/polygon/polygon_45_set_concept.hpp: In substitution of 'template&lt;class polygon_set_type_1, class polygon_set_type_2&gt; typename boost::enable_if&lt;typename boost::polygon::gtl_and&lt;typename boost::polygon::gtl_if&lt;typename boost::polygon::is_mutable_polygon_45_set_type&lt;T&gt;::type&gt;::type, typename boost::polygon::gtl_if&lt;typename boost::polygon::is_polygon_45_or_90_set_type&lt;polygon_set_type_2&gt;::type&gt;::type&gt;::type, polygon_set_type_1&gt;::type&amp; boost::polygon::assign(polygon_set_type_1&amp;, const polygon_set_type_2&amp;) [with polygon_set_type_1 = boost::polygon::point_data&lt;int&gt;; polygon_set_type_2 = int]': /usr/include/boost/polygon/point_data.hpp:55:23: required from 'boost::polygon::point_data&lt;T&gt;&amp; boost::polygon::point_data&lt;T&gt;::operator=(const PointType&amp;) [with PointType = int; T = int]' /usr/include/boost/polygon/point_data.hpp:50:11: required from 'boost::polygon::point_data&lt;T&gt;::point_data(const PointType&amp;) [with PointType = int; T = int]' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/bits/stl_pair.h:125:39: required from 'constexpr std::pair&lt;_T1, _T2&gt;::pair(const std::pair&lt;_U1, _U2&gt;&amp;) [with _U1 = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;; _U2 = int; &lt;template-parameter-2-3&gt; = void; _T1 = boost::polygon::point_data&lt;int&gt;; _T2 = boost::polygon::point_data&lt;int&gt;]' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/type_traits:1305:35: required by substitution of 'template&lt;class _From1, class _To1&gt; static decltype ((__test_aux&lt;_To1&gt;(declval&lt;_From1&gt;()), std::__sfinae_types::__one())) std::__is_convertible_helper&lt;_From, _To, false&gt;::__test(int) [with _From1 = _From1; _To1 = _To1; _From = const std::pair&lt;std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, int&gt;&amp;; _To = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;] [with _From1 = const std::pair&lt;std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, int&gt;&amp;; _To1 = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;]' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/type_traits:1312:50: required from 'constexpr const bool std::__is_convertible_helper&lt;const std::pair&lt;std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, int&gt;&amp;, std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, false&gt;::value' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/type_traits:1317:12: [ skipping 20 instantiation contexts, use -ftemplate-backtrace-limit=0 to disable ] /usr/include/boost/polygon/detail/polygon_arbitrary_formation.hpp:1682:11: required from 'iT boost::polygon::polygon_arbitrary_formation&lt;Unit&gt;::processEvent_(cT&amp;, iT, iT) [with cT = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; iT = __gnu_cxx::__normal_iterator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge*, std::vector&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge, std::allocator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge&gt; &gt; &gt;; Unit = int]' /usr/include/boost/polygon/detail/polygon_arbitrary_formation.hpp:1361:64: required from 'void boost::polygon::polygon_arbitrary_formation&lt;Unit&gt;::scan(cT&amp;, iT, iT) [with cT = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; iT = __gnu_cxx::__normal_iterator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge*, std::vector&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge, std::allocator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge&gt; &gt; &gt;; Unit = int]' /usr/include/boost/polygon/polygon_set_data.hpp:798:7: required from 'void boost::polygon::polygon_set_data&lt;T&gt;::get_fracture(output_container&amp;, bool, concept_type) const [with output_container = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; concept_type = boost::polygon::polygon_concept; T = int]' /usr/include/boost/polygon/polygon_set_data.hpp:781:37: required from 'void boost::polygon::polygon_set_data&lt;T&gt;::get_dispatch(output_container&amp;, boost::polygon::polygon_concept) const [with output_container = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; T = int]' /usr/include/boost/polygon/polygon_set_data.hpp:233:100: required from 'void boost::polygon::polygon_set_data&lt;T&gt;::get(output_container&amp;) const [with output_container = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; T = int]' t.cpp:11:15: required from here /usr/include/boost/polygon/polygon_45_set_concept.hpp:51:3: error: no type named 'type' in 'struct boost::polygon::gtl_if&lt;boost::polygon::gtl_no&gt;' In file included from /usr/include/boost/polygon/polygon.hpp:67:0, from t.cpp:3: /usr/include/boost/polygon/point_data.hpp: In instantiation of 'boost::polygon::point_data&lt;T&gt;&amp; boost::polygon::point_data&lt;T&gt;::operator=(const PointType&amp;) [with PointType = int; T = int]': /usr/include/boost/polygon/point_data.hpp:50:11: required from 'boost::polygon::point_data&lt;T&gt;::point_data(const PointType&amp;) [with PointType = int; T = int]' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/bits/stl_pair.h:125:39: required from 'constexpr std::pair&lt;_T1, _T2&gt;::pair(const std::pair&lt;_U1, _U2&gt;&amp;) [with _U1 = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;; _U2 = int; &lt;template-parameter-2-3&gt; = void; _T1 = boost::polygon::point_data&lt;int&gt;; _T2 = boost::polygon::point_data&lt;int&gt;]' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/type_traits:1305:35: required by substitution of 'template&lt;class _From1, class _To1&gt; static decltype ((__test_aux&lt;_To1&gt;(declval&lt;_From1&gt;()), std::__sfinae_types::__one())) std::__is_convertible_helper&lt;_From, _To, false&gt;::__test(int) [with _From1 = _From1; _To1 = _To1; _From = const std::pair&lt;std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, int&gt;&amp;; _To = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;] [with _From1 = const std::pair&lt;std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, int&gt;&amp;; _To1 = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;]' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/type_traits:1312:50: required from 'constexpr const bool std::__is_convertible_helper&lt;const std::pair&lt;std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, int&gt;&amp;, std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, false&gt;::value' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/type_traits:1317:12: required from 'struct std::is_convertible&lt;const std::pair&lt;std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, int&gt;&amp;, std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt; &gt;' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/type_traits:116:12: [ skipping 19 instantiation contexts, use -ftemplate-backtrace-limit=0 to disable ] /usr/include/boost/polygon/detail/polygon_arbitrary_formation.hpp:1682:11: required from 'iT boost::polygon::polygon_arbitrary_formation&lt;Unit&gt;::processEvent_(cT&amp;, iT, iT) [with cT = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; iT = __gnu_cxx::__normal_iterator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge*, std::vector&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge, std::allocator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge&gt; &gt; &gt;; Unit = int]' /usr/include/boost/polygon/detail/polygon_arbitrary_formation.hpp:1361:64: required from 'void boost::polygon::polygon_arbitrary_formation&lt;Unit&gt;::scan(cT&amp;, iT, iT) [with cT = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; iT = __gnu_cxx::__normal_iterator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge*, std::vector&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge, std::allocator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge&gt; &gt; &gt;; Unit = int]' /usr/include/boost/polygon/polygon_set_data.hpp:798:7: required from 'void boost::polygon::polygon_set_data&lt;T&gt;::get_fracture(output_container&amp;, bool, concept_type) const [with output_container = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; concept_type = boost::polygon::polygon_concept; T = int]' /usr/include/boost/polygon/polygon_set_data.hpp:781:37: required from 'void boost::polygon::polygon_set_data&lt;T&gt;::get_dispatch(output_container&amp;, boost::polygon::polygon_concept) const [with output_container = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; T = int]' /usr/include/boost/polygon/polygon_set_data.hpp:233:100: required from 'void boost::polygon::polygon_set_data&lt;T&gt;::get(output_container&amp;) const [with output_container = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; T = int]' t.cpp:11:15: required from here /usr/include/boost/polygon/polygon_90_set_concept.hpp:49:3: note: template&lt;class polygon_set_type_1, class polygon_set_type_2&gt; typename boost::enable_if&lt;typename boost::polygon::gtl_and&lt;typename boost::polygon::is_mutable_polygon_90_set_type&lt;T&gt;::type, typename boost::polygon::is_polygon_90_set_type&lt;polygon_set_type_2&gt;::type&gt;::type, polygon_set_type_1&gt;::type&amp; boost::polygon::assign(polygon_set_type_1&amp;, const polygon_set_type_2&amp;) assign(polygon_set_type_1&amp; lvalue, const polygon_set_type_2&amp; rvalue) { ^ /usr/include/boost/polygon/polygon_90_set_concept.hpp:49:3: note: template argument deduction/substitution failed: /usr/include/boost/polygon/polygon_90_set_concept.hpp: In substitution of 'template&lt;class polygon_set_type_1, class polygon_set_type_2&gt; typename boost::enable_if&lt;typename boost::polygon::gtl_and&lt;typename boost::polygon::is_mutable_polygon_90_set_type&lt;T&gt;::type, typename boost::polygon::is_polygon_90_set_type&lt;polygon_set_type_2&gt;::type&gt;::type, polygon_set_type_1&gt;::type&amp; boost::polygon::assign(polygon_set_type_1&amp;, const polygon_set_type_2&amp;) [with polygon_set_type_1 = boost::polygon::point_data&lt;int&gt;; polygon_set_type_2 = int]': /usr/include/boost/polygon/point_data.hpp:55:23: required from 'boost::polygon::point_data&lt;T&gt;&amp; boost::polygon::point_data&lt;T&gt;::operator=(const PointType&amp;) [with PointType = int; T = int]' /usr/include/boost/polygon/point_data.hpp:50:11: required from 'boost::polygon::point_data&lt;T&gt;::point_data(const PointType&amp;) [with PointType = int; T = int]' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/bits/stl_pair.h:125:39: required from 'constexpr std::pair&lt;_T1, _T2&gt;::pair(const std::pair&lt;_U1, _U2&gt;&amp;) [with _U1 = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;; _U2 = int; &lt;template-parameter-2-3&gt; = void; _T1 = boost::polygon::point_data&lt;int&gt;; _T2 = boost::polygon::point_data&lt;int&gt;]' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/type_traits:1305:35: required by substitution of 'template&lt;class _From1, class _To1&gt; static decltype ((__test_aux&lt;_To1&gt;(declval&lt;_From1&gt;()), std::__sfinae_types::__one())) std::__is_convertible_helper&lt;_From, _To, false&gt;::__test(int) [with _From1 = _From1; _To1 = _To1; _From = const std::pair&lt;std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, int&gt;&amp;; _To = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;] [with _From1 = const std::pair&lt;std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, int&gt;&amp;; _To1 = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;]' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/type_traits:1312:50: required from 'constexpr const bool std::__is_convertible_helper&lt;const std::pair&lt;std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, int&gt;&amp;, std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, false&gt;::value' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/type_traits:1317:12: [ skipping 20 instantiation contexts, use -ftemplate-backtrace-limit=0 to disable ] /usr/include/boost/polygon/detail/polygon_arbitrary_formation.hpp:1682:11: required from 'iT boost::polygon::polygon_arbitrary_formation&lt;Unit&gt;::processEvent_(cT&amp;, iT, iT) [with cT = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; iT = __gnu_cxx::__normal_iterator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge*, std::vector&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge, std::allocator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge&gt; &gt; &gt;; Unit = int]' /usr/include/boost/polygon/detail/polygon_arbitrary_formation.hpp:1361:64: required from 'void boost::polygon::polygon_arbitrary_formation&lt;Unit&gt;::scan(cT&amp;, iT, iT) [with cT = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; iT = __gnu_cxx::__normal_iterator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge*, std::vector&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge, std::allocator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge&gt; &gt; &gt;; Unit = int]' /usr/include/boost/polygon/polygon_set_data.hpp:798:7: required from 'void boost::polygon::polygon_set_data&lt;T&gt;::get_fracture(output_container&amp;, bool, concept_type) const [with output_container = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; concept_type = boost::polygon::polygon_concept; T = int]' /usr/include/boost/polygon/polygon_set_data.hpp:781:37: required from 'void boost::polygon::polygon_set_data&lt;T&gt;::get_dispatch(output_container&amp;, boost::polygon::polygon_concept) const [with output_container = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; T = int]' /usr/include/boost/polygon/polygon_set_data.hpp:233:100: required from 'void boost::polygon::polygon_set_data&lt;T&gt;::get(output_container&amp;) const [with output_container = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; T = int]' t.cpp:11:15: required from here /usr/include/boost/polygon/polygon_90_set_concept.hpp:49:3: error: no type named 'type' in 'struct boost::enable_if&lt;mpl_::bool_&lt;false&gt;, boost::polygon::point_data&lt;int&gt; &gt;' In file included from /usr/include/boost/polygon/polygon.hpp:47:0, from t.cpp:3: /usr/include/boost/polygon/point_data.hpp: In instantiation of 'boost::polygon::point_data&lt;T&gt;&amp; boost::polygon::point_data&lt;T&gt;::operator=(const PointType&amp;) [with PointType = int; T = int]': /usr/include/boost/polygon/point_data.hpp:50:11: required from 'boost::polygon::point_data&lt;T&gt;::point_data(const PointType&amp;) [with PointType = int; T = int]' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/bits/stl_pair.h:125:39: required from 'constexpr std::pair&lt;_T1, _T2&gt;::pair(const std::pair&lt;_U1, _U2&gt;&amp;) [with _U1 = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;; _U2 = int; &lt;template-parameter-2-3&gt; = void; _T1 = boost::polygon::point_data&lt;int&gt;; _T2 = boost::polygon::point_data&lt;int&gt;]' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/type_traits:1305:35: required by substitution of 'template&lt;class _From1, class _To1&gt; static decltype ((__test_aux&lt;_To1&gt;(declval&lt;_From1&gt;()), std::__sfinae_types::__one())) std::__is_convertible_helper&lt;_From, _To, false&gt;::__test(int) [with _From1 = _From1; _To1 = _To1; _From = const std::pair&lt;std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, int&gt;&amp;; _To = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;] [with _From1 = const std::pair&lt;std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, int&gt;&amp;; _To1 = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;]' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/type_traits:1312:50: required from 'constexpr const bool std::__is_convertible_helper&lt;const std::pair&lt;std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, int&gt;&amp;, std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, false&gt;::value' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/type_traits:1317:12: required from 'struct std::is_convertible&lt;const std::pair&lt;std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, int&gt;&amp;, std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt; &gt;' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/type_traits:116:12: [ skipping 19 instantiation contexts, use -ftemplate-backtrace-limit=0 to disable ] /usr/include/boost/polygon/detail/polygon_arbitrary_formation.hpp:1682:11: required from 'iT boost::polygon::polygon_arbitrary_formation&lt;Unit&gt;::processEvent_(cT&amp;, iT, iT) [with cT = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; iT = __gnu_cxx::__normal_iterator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge*, std::vector&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge, std::allocator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge&gt; &gt; &gt;; Unit = int]' /usr/include/boost/polygon/detail/polygon_arbitrary_formation.hpp:1361:64: required from 'void boost::polygon::polygon_arbitrary_formation&lt;Unit&gt;::scan(cT&amp;, iT, iT) [with cT = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; iT = __gnu_cxx::__normal_iterator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge*, std::vector&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge, std::allocator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge&gt; &gt; &gt;; Unit = int]' /usr/include/boost/polygon/polygon_set_data.hpp:798:7: required from 'void boost::polygon::polygon_set_data&lt;T&gt;::get_fracture(output_container&amp;, bool, concept_type) const [with output_container = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; concept_type = boost::polygon::polygon_concept; T = int]' /usr/include/boost/polygon/polygon_set_data.hpp:781:37: required from 'void boost::polygon::polygon_set_data&lt;T&gt;::get_dispatch(output_container&amp;, boost::polygon::polygon_concept) const [with output_container = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; T = int]' /usr/include/boost/polygon/polygon_set_data.hpp:233:100: required from 'void boost::polygon::polygon_set_data&lt;T&gt;::get(output_container&amp;) const [with output_container = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; T = int]' t.cpp:11:15: required from here /usr/include/boost/polygon/polygon_traits.hpp:583:3: note: template&lt;class T1, class T2&gt; typename boost::enable_if&lt;typename boost::polygon::gtl_and&lt;typename boost::polygon::is_any_mutable_polygon_type&lt;T&gt;::type, typename boost::polygon::is_rectangle_concept&lt;typename boost::polygon::geometry_concept&lt;PointType2&gt;::type&gt;::type&gt;::type, T1&gt;::type&amp; boost::polygon::assign(T1&amp;, const T2&amp;) assign(T1&amp; polygon, const T2&amp; rect) { ^ /usr/include/boost/polygon/polygon_traits.hpp:583:3: note: template argument deduction/substitution failed: /usr/include/boost/polygon/polygon_traits.hpp: In substitution of 'template&lt;class T1, class T2&gt; typename boost::enable_if&lt;typename boost::polygon::gtl_and&lt;typename boost::polygon::is_any_mutable_polygon_type&lt;T&gt;::type, typename boost::polygon::is_rectangle_concept&lt;typename boost::polygon::geometry_concept&lt;PointType2&gt;::type&gt;::type&gt;::type, T1&gt;::type&amp; boost::polygon::assign(T1&amp;, const T2&amp;) [with T1 = boost::polygon::point_data&lt;int&gt;; T2 = int]': /usr/include/boost/polygon/point_data.hpp:55:23: required from 'boost::polygon::point_data&lt;T&gt;&amp; boost::polygon::point_data&lt;T&gt;::operator=(const PointType&amp;) [with PointType = int; T = int]' /usr/include/boost/polygon/point_data.hpp:50:11: required from 'boost::polygon::point_data&lt;T&gt;::point_data(const PointType&amp;) [with PointType = int; T = int]' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/bits/stl_pair.h:125:39: required from 'constexpr std::pair&lt;_T1, _T2&gt;::pair(const std::pair&lt;_U1, _U2&gt;&amp;) [with _U1 = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;; _U2 = int; &lt;template-parameter-2-3&gt; = void; _T1 = boost::polygon::point_data&lt;int&gt;; _T2 = boost::polygon::point_data&lt;int&gt;]' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/type_traits:1305:35: required by substitution of 'template&lt;class _From1, class _To1&gt; static decltype ((__test_aux&lt;_To1&gt;(declval&lt;_From1&gt;()), std::__sfinae_types::__one())) std::__is_convertible_helper&lt;_From, _To, false&gt;::__test(int) [with _From1 = _From1; _To1 = _To1; _From = const std::pair&lt;std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, int&gt;&amp;; _To = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;] [with _From1 = const std::pair&lt;std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, int&gt;&amp;; _To1 = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;]' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/type_traits:1312:50: required from 'constexpr const bool std::__is_convertible_helper&lt;const std::pair&lt;std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, int&gt;&amp;, std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, false&gt;::value' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/type_traits:1317:12: [ skipping 20 instantiation contexts, use -ftemplate-backtrace-limit=0 to disable ] /usr/include/boost/polygon/detail/polygon_arbitrary_formation.hpp:1682:11: required from 'iT boost::polygon::polygon_arbitrary_formation&lt;Unit&gt;::processEvent_(cT&amp;, iT, iT) [with cT = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; iT = __gnu_cxx::__normal_iterator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge*, std::vector&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge, std::allocator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge&gt; &gt; &gt;; Unit = int]' /usr/include/boost/polygon/detail/polygon_arbitrary_formation.hpp:1361:64: required from 'void boost::polygon::polygon_arbitrary_formation&lt;Unit&gt;::scan(cT&amp;, iT, iT) [with cT = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; iT = __gnu_cxx::__normal_iterator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge*, std::vector&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge, std::allocator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge&gt; &gt; &gt;; Unit = int]' /usr/include/boost/polygon/polygon_set_data.hpp:798:7: required from 'void boost::polygon::polygon_set_data&lt;T&gt;::get_fracture(output_container&amp;, bool, concept_type) const [with output_container = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; concept_type = boost::polygon::polygon_concept; T = int]' /usr/include/boost/polygon/polygon_set_data.hpp:781:37: required from 'void boost::polygon::polygon_set_data&lt;T&gt;::get_dispatch(output_container&amp;, boost::polygon::polygon_concept) const [with output_container = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; T = int]' /usr/include/boost/polygon/polygon_set_data.hpp:233:100: required from 'void boost::polygon::polygon_set_data&lt;T&gt;::get(output_container&amp;) const [with output_container = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; T = int]' t.cpp:11:15: required from here /usr/include/boost/polygon/polygon_traits.hpp:583:3: error: no type named 'type' in 'struct boost::enable_if&lt;mpl_::bool_&lt;false&gt;, boost::polygon::point_data&lt;int&gt; &gt;' /usr/include/boost/polygon/point_data.hpp: In instantiation of 'boost::polygon::point_data&lt;T&gt;&amp; boost::polygon::point_data&lt;T&gt;::operator=(const PointType&amp;) [with PointType = int; T = int]': /usr/include/boost/polygon/point_data.hpp:50:11: required from 'boost::polygon::point_data&lt;T&gt;::point_data(const PointType&amp;) [with PointType = int; T = int]' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/bits/stl_pair.h:125:39: required from 'constexpr std::pair&lt;_T1, _T2&gt;::pair(const std::pair&lt;_U1, _U2&gt;&amp;) [with _U1 = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;; _U2 = int; &lt;template-parameter-2-3&gt; = void; _T1 = boost::polygon::point_data&lt;int&gt;; _T2 = boost::polygon::point_data&lt;int&gt;]' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/type_traits:1305:35: required by substitution of 'template&lt;class _From1, class _To1&gt; static decltype ((__test_aux&lt;_To1&gt;(declval&lt;_From1&gt;()), std::__sfinae_types::__one())) std::__is_convertible_helper&lt;_From, _To, false&gt;::__test(int) [with _From1 = _From1; _To1 = _To1; _From = const std::pair&lt;std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, int&gt;&amp;; _To = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;] [with _From1 = const std::pair&lt;std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, int&gt;&amp;; _To1 = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;]' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/type_traits:1312:50: required from 'constexpr const bool std::__is_convertible_helper&lt;const std::pair&lt;std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, int&gt;&amp;, std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, false&gt;::value' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/type_traits:1317:12: required from 'struct std::is_convertible&lt;const std::pair&lt;std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, int&gt;&amp;, std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt; &gt;' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/type_traits:116:12: [ skipping 19 instantiation contexts, use -ftemplate-backtrace-limit=0 to disable ] /usr/include/boost/polygon/detail/polygon_arbitrary_formation.hpp:1682:11: required from 'iT boost::polygon::polygon_arbitrary_formation&lt;Unit&gt;::processEvent_(cT&amp;, iT, iT) [with cT = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; iT = __gnu_cxx::__normal_iterator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge*, std::vector&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge, std::allocator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge&gt; &gt; &gt;; Unit = int]' /usr/include/boost/polygon/detail/polygon_arbitrary_formation.hpp:1361:64: required from 'void boost::polygon::polygon_arbitrary_formation&lt;Unit&gt;::scan(cT&amp;, iT, iT) [with cT = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; iT = __gnu_cxx::__normal_iterator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge*, std::vector&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge, std::allocator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge&gt; &gt; &gt;; Unit = int]' /usr/include/boost/polygon/polygon_set_data.hpp:798:7: required from 'void boost::polygon::polygon_set_data&lt;T&gt;::get_fracture(output_container&amp;, bool, concept_type) const [with output_container = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; concept_type = boost::polygon::polygon_concept; T = int]' /usr/include/boost/polygon/polygon_set_data.hpp:781:37: required from 'void boost::polygon::polygon_set_data&lt;T&gt;::get_dispatch(output_container&amp;, boost::polygon::polygon_concept) const [with output_container = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; T = int]' /usr/include/boost/polygon/polygon_set_data.hpp:233:100: required from 'void boost::polygon::polygon_set_data&lt;T&gt;::get(output_container&amp;) const [with output_container = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; T = int]' t.cpp:11:15: required from here /usr/include/boost/polygon/polygon_traits.hpp:570:3: note: template&lt;class T1, class T2&gt; typename boost::enable_if&lt;typename boost::polygon::gtl_and&lt;typename boost::polygon::is_mutable_polygon_90_with_holes_type&lt;T&gt;::type, typename boost::polygon::is_polygon_90_with_holes_type&lt;T2&gt;::type&gt;::type, T1&gt;::type&amp; boost::polygon::assign(T1&amp;, const T2&amp;) assign(T1&amp; lvalue, const T2&amp; rvalue) { ^ /usr/include/boost/polygon/polygon_traits.hpp:570:3: note: template argument deduction/substitution failed: /usr/include/boost/polygon/polygon_traits.hpp: In substitution of 'template&lt;class T1, class T2&gt; typename boost::enable_if&lt;typename boost::polygon::gtl_and&lt;typename boost::polygon::is_mutable_polygon_90_with_holes_type&lt;T&gt;::type, typename boost::polygon::is_polygon_90_with_holes_type&lt;T2&gt;::type&gt;::type, T1&gt;::type&amp; boost::polygon::assign(T1&amp;, const T2&amp;) [with T1 = boost::polygon::point_data&lt;int&gt;; T2 = int]': /usr/include/boost/polygon/point_data.hpp:55:23: required from 'boost::polygon::point_data&lt;T&gt;&amp; boost::polygon::point_data&lt;T&gt;::operator=(const PointType&amp;) [with PointType = int; T = int]' /usr/include/boost/polygon/point_data.hpp:50:11: required from 'boost::polygon::point_data&lt;T&gt;::point_data(const PointType&amp;) [with PointType = int; T = int]' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/bits/stl_pair.h:125:39: required from 'constexpr std::pair&lt;_T1, _T2&gt;::pair(const std::pair&lt;_U1, _U2&gt;&amp;) [with _U1 = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;; _U2 = int; &lt;template-parameter-2-3&gt; = void; _T1 = boost::polygon::point_data&lt;int&gt;; _T2 = boost::polygon::point_data&lt;int&gt;]' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/type_traits:1305:35: required by substitution of 'template&lt;class _From1, class _To1&gt; static decltype ((__test_aux&lt;_To1&gt;(declval&lt;_From1&gt;()), std::__sfinae_types::__one())) std::__is_convertible_helper&lt;_From, _To, false&gt;::__test(int) [with _From1 = _From1; _To1 = _To1; _From = const std::pair&lt;std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, int&gt;&amp;; _To = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;] [with _From1 = const std::pair&lt;std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, int&gt;&amp;; _To1 = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;]' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/type_traits:1312:50: required from 'constexpr const bool std::__is_convertible_helper&lt;const std::pair&lt;std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, int&gt;&amp;, std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, false&gt;::value' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/type_traits:1317:12: [ skipping 20 instantiation contexts, use -ftemplate-backtrace-limit=0 to disable ] /usr/include/boost/polygon/detail/polygon_arbitrary_formation.hpp:1682:11: required from 'iT boost::polygon::polygon_arbitrary_formation&lt;Unit&gt;::processEvent_(cT&amp;, iT, iT) [with cT = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; iT = __gnu_cxx::__normal_iterator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge*, std::vector&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge, std::allocator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge&gt; &gt; &gt;; Unit = int]' /usr/include/boost/polygon/detail/polygon_arbitrary_formation.hpp:1361:64: required from 'void boost::polygon::polygon_arbitrary_formation&lt;Unit&gt;::scan(cT&amp;, iT, iT) [with cT = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; iT = __gnu_cxx::__normal_iterator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge*, std::vector&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge, std::allocator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge&gt; &gt; &gt;; Unit = int]' /usr/include/boost/polygon/polygon_set_data.hpp:798:7: required from 'void boost::polygon::polygon_set_data&lt;T&gt;::get_fracture(output_container&amp;, bool, concept_type) const [with output_container = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; concept_type = boost::polygon::polygon_concept; T = int]' /usr/include/boost/polygon/polygon_set_data.hpp:781:37: required from 'void boost::polygon::polygon_set_data&lt;T&gt;::get_dispatch(output_container&amp;, boost::polygon::polygon_concept) const [with output_container = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; T = int]' /usr/include/boost/polygon/polygon_set_data.hpp:233:100: required from 'void boost::polygon::polygon_set_data&lt;T&gt;::get(output_container&amp;) const [with output_container = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; T = int]' t.cpp:11:15: required from here /usr/include/boost/polygon/polygon_traits.hpp:570:3: error: no type named 'type' in 'struct boost::enable_if&lt;mpl_::bool_&lt;false&gt;, boost::polygon::point_data&lt;int&gt; &gt;' /usr/include/boost/polygon/point_data.hpp: In instantiation of 'boost::polygon::point_data&lt;T&gt;&amp; boost::polygon::point_data&lt;T&gt;::operator=(const PointType&amp;) [with PointType = int; T = int]': /usr/include/boost/polygon/point_data.hpp:50:11: required from 'boost::polygon::point_data&lt;T&gt;::point_data(const PointType&amp;) [with PointType = int; T = int]' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/bits/stl_pair.h:125:39: required from 'constexpr std::pair&lt;_T1, _T2&gt;::pair(const std::pair&lt;_U1, _U2&gt;&amp;) [with _U1 = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;; _U2 = int; &lt;template-parameter-2-3&gt; = void; _T1 = boost::polygon::point_data&lt;int&gt;; _T2 = boost::polygon::point_data&lt;int&gt;]' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/type_traits:1305:35: required by substitution of 'template&lt;class _From1, class _To1&gt; static decltype ((__test_aux&lt;_To1&gt;(declval&lt;_From1&gt;()), std::__sfinae_types::__one())) std::__is_convertible_helper&lt;_From, _To, false&gt;::__test(int) [with _From1 = _From1; _To1 = _To1; _From = const std::pair&lt;std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, int&gt;&amp;; _To = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;] [with _From1 = const std::pair&lt;std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, int&gt;&amp;; _To1 = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;]' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/type_traits:1312:50: required from 'constexpr const bool std::__is_convertible_helper&lt;const std::pair&lt;std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, int&gt;&amp;, std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, false&gt;::value' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/type_traits:1317:12: required from 'struct std::is_convertible&lt;const std::pair&lt;std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, int&gt;&amp;, std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt; &gt;' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/type_traits:116:12: [ skipping 19 instantiation contexts, use -ftemplate-backtrace-limit=0 to disable ] /usr/include/boost/polygon/detail/polygon_arbitrary_formation.hpp:1682:11: required from 'iT boost::polygon::polygon_arbitrary_formation&lt;Unit&gt;::processEvent_(cT&amp;, iT, iT) [with cT = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; iT = __gnu_cxx::__normal_iterator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge*, std::vector&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge, std::allocator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge&gt; &gt; &gt;; Unit = int]' /usr/include/boost/polygon/detail/polygon_arbitrary_formation.hpp:1361:64: required from 'void boost::polygon::polygon_arbitrary_formation&lt;Unit&gt;::scan(cT&amp;, iT, iT) [with cT = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; iT = __gnu_cxx::__normal_iterator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge*, std::vector&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge, std::allocator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge&gt; &gt; &gt;; Unit = int]' /usr/include/boost/polygon/polygon_set_data.hpp:798:7: required from 'void boost::polygon::polygon_set_data&lt;T&gt;::get_fracture(output_container&amp;, bool, concept_type) const [with output_container = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; concept_type = boost::polygon::polygon_concept; T = int]' /usr/include/boost/polygon/polygon_set_data.hpp:781:37: required from 'void boost::polygon::polygon_set_data&lt;T&gt;::get_dispatch(output_container&amp;, boost::polygon::polygon_concept) const [with output_container = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; T = int]' /usr/include/boost/polygon/polygon_set_data.hpp:233:100: required from 'void boost::polygon::polygon_set_data&lt;T&gt;::get(output_container&amp;) const [with output_container = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; T = int]' t.cpp:11:15: required from here /usr/include/boost/polygon/polygon_traits.hpp:559:3: note: template&lt;class T1, class T2&gt; typename boost::enable_if&lt;typename boost::polygon::gtl_and&lt;typename boost::polygon::is_mutable_polygon_90_type&lt;T&gt;::type, typename boost::polygon::is_polygon_90_type&lt;T2&gt;::type&gt;::type, T1&gt;::type&amp; boost::polygon::assign(T1&amp;, const T2&amp;) assign(T1&amp; lvalue, const T2&amp; rvalue) { ^ /usr/include/boost/polygon/polygon_traits.hpp:559:3: note: template argument deduction/substitution failed: /usr/include/boost/polygon/polygon_traits.hpp: In substitution of 'template&lt;class T1, class T2&gt; typename boost::enable_if&lt;typename boost::polygon::gtl_and&lt;typename boost::polygon::is_mutable_polygon_90_type&lt;T&gt;::type, typename boost::polygon::is_polygon_90_type&lt;T2&gt;::type&gt;::type, T1&gt;::type&amp; boost::polygon::assign(T1&amp;, const T2&amp;) [with T1 = boost::polygon::point_data&lt;int&gt;; T2 = int]': /usr/include/boost/polygon/point_data.hpp:55:23: required from 'boost::polygon::point_data&lt;T&gt;&amp; boost::polygon::point_data&lt;T&gt;::operator=(const PointType&amp;) [with PointType = int; T = int]' /usr/include/boost/polygon/point_data.hpp:50:11: required from 'boost::polygon::point_data&lt;T&gt;::point_data(const PointType&amp;) [with PointType = int; T = int]' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/bits/stl_pair.h:125:39: required from 'constexpr std::pair&lt;_T1, _T2&gt;::pair(const std::pair&lt;_U1, _U2&gt;&amp;) [with _U1 = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;; _U2 = int; &lt;template-parameter-2-3&gt; = void; _T1 = boost::polygon::point_data&lt;int&gt;; _T2 = boost::polygon::point_data&lt;int&gt;]' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/type_traits:1305:35: required by substitution of 'template&lt;class _From1, class _To1&gt; static decltype ((__test_aux&lt;_To1&gt;(declval&lt;_From1&gt;()), std::__sfinae_types::__one())) std::__is_convertible_helper&lt;_From, _To, false&gt;::__test(int) [with _From1 = _From1; _To1 = _To1; _From = const std::pair&lt;std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, int&gt;&amp;; _To = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;] [with _From1 = const std::pair&lt;std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, int&gt;&amp;; _To1 = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;]' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/type_traits:1312:50: required from 'constexpr const bool std::__is_convertible_helper&lt;const std::pair&lt;std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, int&gt;&amp;, std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, false&gt;::value' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/type_traits:1317:12: [ skipping 20 instantiation contexts, use -ftemplate-backtrace-limit=0 to disable ] /usr/include/boost/polygon/detail/polygon_arbitrary_formation.hpp:1682:11: required from 'iT boost::polygon::polygon_arbitrary_formation&lt;Unit&gt;::processEvent_(cT&amp;, iT, iT) [with cT = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; iT = __gnu_cxx::__normal_iterator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge*, std::vector&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge, std::allocator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge&gt; &gt; &gt;; Unit = int]' /usr/include/boost/polygon/detail/polygon_arbitrary_formation.hpp:1361:64: required from 'void boost::polygon::polygon_arbitrary_formation&lt;Unit&gt;::scan(cT&amp;, iT, iT) [with cT = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; iT = __gnu_cxx::__normal_iterator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge*, std::vector&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge, std::allocator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge&gt; &gt; &gt;; Unit = int]' /usr/include/boost/polygon/polygon_set_data.hpp:798:7: required from 'void boost::polygon::polygon_set_data&lt;T&gt;::get_fracture(output_container&amp;, bool, concept_type) const [with output_container = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; concept_type = boost::polygon::polygon_concept; T = int]' /usr/include/boost/polygon/polygon_set_data.hpp:781:37: required from 'void boost::polygon::polygon_set_data&lt;T&gt;::get_dispatch(output_container&amp;, boost::polygon::polygon_concept) const [with output_container = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; T = int]' /usr/include/boost/polygon/polygon_set_data.hpp:233:100: required from 'void boost::polygon::polygon_set_data&lt;T&gt;::get(output_container&amp;) const [with output_container = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; T = int]' t.cpp:11:15: required from here /usr/include/boost/polygon/polygon_traits.hpp:559:3: error: no type named 'type' in 'struct boost::enable_if&lt;mpl_::bool_&lt;false&gt;, boost::polygon::point_data&lt;int&gt; &gt;' /usr/include/boost/polygon/point_data.hpp: In instantiation of 'boost::polygon::point_data&lt;T&gt;&amp; boost::polygon::point_data&lt;T&gt;::operator=(const PointType&amp;) [with PointType = int; T = int]': /usr/include/boost/polygon/point_data.hpp:50:11: required from 'boost::polygon::point_data&lt;T&gt;::point_data(const PointType&amp;) [with PointType = int; T = int]' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/bits/stl_pair.h:125:39: required from 'constexpr std::pair&lt;_T1, _T2&gt;::pair(const std::pair&lt;_U1, _U2&gt;&amp;) [with _U1 = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;; _U2 = int; &lt;template-parameter-2-3&gt; = void; _T1 = boost::polygon::point_data&lt;int&gt;; _T2 = boost::polygon::point_data&lt;int&gt;]' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/type_traits:1305:35: required by substitution of 'template&lt;class _From1, class _To1&gt; static decltype ((__test_aux&lt;_To1&gt;(declval&lt;_From1&gt;()), std::__sfinae_types::__one())) std::__is_convertible_helper&lt;_From, _To, false&gt;::__test(int) [with _From1 = _From1; _To1 = _To1; _From = const std::pair&lt;std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, int&gt;&amp;; _To = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;] [with _From1 = const std::pair&lt;std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, int&gt;&amp;; _To1 = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;]' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/type_traits:1312:50: required from 'constexpr const bool std::__is_convertible_helper&lt;const std::pair&lt;std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, int&gt;&amp;, std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, false&gt;::value' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/type_traits:1317:12: required from 'struct std::is_convertible&lt;const std::pair&lt;std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, int&gt;&amp;, std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt; &gt;' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/type_traits:116:12: [ skipping 19 instantiation contexts, use -ftemplate-backtrace-limit=0 to disable ] /usr/include/boost/polygon/detail/polygon_arbitrary_formation.hpp:1682:11: required from 'iT boost::polygon::polygon_arbitrary_formation&lt;Unit&gt;::processEvent_(cT&amp;, iT, iT) [with cT = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; iT = __gnu_cxx::__normal_iterator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge*, std::vector&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge, std::allocator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge&gt; &gt; &gt;; Unit = int]' /usr/include/boost/polygon/detail/polygon_arbitrary_formation.hpp:1361:64: required from 'void boost::polygon::polygon_arbitrary_formation&lt;Unit&gt;::scan(cT&amp;, iT, iT) [with cT = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; iT = __gnu_cxx::__normal_iterator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge*, std::vector&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge, std::allocator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge&gt; &gt; &gt;; Unit = int]' /usr/include/boost/polygon/polygon_set_data.hpp:798:7: required from 'void boost::polygon::polygon_set_data&lt;T&gt;::get_fracture(output_container&amp;, bool, concept_type) const [with output_container = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; concept_type = boost::polygon::polygon_concept; T = int]' /usr/include/boost/polygon/polygon_set_data.hpp:781:37: required from 'void boost::polygon::polygon_set_data&lt;T&gt;::get_dispatch(output_container&amp;, boost::polygon::polygon_concept) const [with output_container = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; T = int]' /usr/include/boost/polygon/polygon_set_data.hpp:233:100: required from 'void boost::polygon::polygon_set_data&lt;T&gt;::get(output_container&amp;) const [with output_container = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; T = int]' t.cpp:11:15: required from here /usr/include/boost/polygon/polygon_traits.hpp:546:3: note: template&lt;class T1, class T2&gt; typename boost::enable_if&lt;typename boost::polygon::gtl_and&lt;typename boost::polygon::is_mutable_polygon_45_with_holes_type&lt;T&gt;::type, typename boost::polygon::is_polygon_45_with_holes_type&lt;T2&gt;::type&gt;::type, T1&gt;::type&amp; boost::polygon::assign(T1&amp;, const T2&amp;) assign(T1&amp; lvalue, const T2&amp; rvalue) { ^ /usr/include/boost/polygon/polygon_traits.hpp:546:3: note: template argument deduction/substitution failed: /usr/include/boost/polygon/polygon_traits.hpp: In substitution of 'template&lt;class T1, class T2&gt; typename boost::enable_if&lt;typename boost::polygon::gtl_and&lt;typename boost::polygon::is_mutable_polygon_45_with_holes_type&lt;T&gt;::type, typename boost::polygon::is_polygon_45_with_holes_type&lt;T2&gt;::type&gt;::type, T1&gt;::type&amp; boost::polygon::assign(T1&amp;, const T2&amp;) [with T1 = boost::polygon::point_data&lt;int&gt;; T2 = int]': /usr/include/boost/polygon/point_data.hpp:55:23: required from 'boost::polygon::point_data&lt;T&gt;&amp; boost::polygon::point_data&lt;T&gt;::operator=(const PointType&amp;) [with PointType = int; T = int]' /usr/include/boost/polygon/point_data.hpp:50:11: required from 'boost::polygon::point_data&lt;T&gt;::point_data(const PointType&amp;) [with PointType = int; T = int]' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/bits/stl_pair.h:125:39: required from 'constexpr std::pair&lt;_T1, _T2&gt;::pair(const std::pair&lt;_U1, _U2&gt;&amp;) [with _U1 = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;; _U2 = int; &lt;template-parameter-2-3&gt; = void; _T1 = boost::polygon::point_data&lt;int&gt;; _T2 = boost::polygon::point_data&lt;int&gt;]' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/type_traits:1305:35: required by substitution of 'template&lt;class _From1, class _To1&gt; static decltype ((__test_aux&lt;_To1&gt;(declval&lt;_From1&gt;()), std::__sfinae_types::__one())) std::__is_convertible_helper&lt;_From, _To, false&gt;::__test(int) [with _From1 = _From1; _To1 = _To1; _From = const std::pair&lt;std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, int&gt;&amp;; _To = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;] [with _From1 = const std::pair&lt;std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, int&gt;&amp;; _To1 = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;]' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/type_traits:1312:50: required from 'constexpr const bool std::__is_convertible_helper&lt;const std::pair&lt;std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, int&gt;&amp;, std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, false&gt;::value' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/type_traits:1317:12: [ skipping 20 instantiation contexts, use -ftemplate-backtrace-limit=0 to disable ] /usr/include/boost/polygon/detail/polygon_arbitrary_formation.hpp:1682:11: required from 'iT boost::polygon::polygon_arbitrary_formation&lt;Unit&gt;::processEvent_(cT&amp;, iT, iT) [with cT = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; iT = __gnu_cxx::__normal_iterator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge*, std::vector&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge, std::allocator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge&gt; &gt; &gt;; Unit = int]' /usr/include/boost/polygon/detail/polygon_arbitrary_formation.hpp:1361:64: required from 'void boost::polygon::polygon_arbitrary_formation&lt;Unit&gt;::scan(cT&amp;, iT, iT) [with cT = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; iT = __gnu_cxx::__normal_iterator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge*, std::vector&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge, std::allocator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge&gt; &gt; &gt;; Unit = int]' /usr/include/boost/polygon/polygon_set_data.hpp:798:7: required from 'void boost::polygon::polygon_set_data&lt;T&gt;::get_fracture(output_container&amp;, bool, concept_type) const [with output_container = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; concept_type = boost::polygon::polygon_concept; T = int]' /usr/include/boost/polygon/polygon_set_data.hpp:781:37: required from 'void boost::polygon::polygon_set_data&lt;T&gt;::get_dispatch(output_container&amp;, boost::polygon::polygon_concept) const [with output_container = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; T = int]' /usr/include/boost/polygon/polygon_set_data.hpp:233:100: required from 'void boost::polygon::polygon_set_data&lt;T&gt;::get(output_container&amp;) const [with output_container = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; T = int]' t.cpp:11:15: required from here /usr/include/boost/polygon/polygon_traits.hpp:546:3: error: no type named 'type' in 'struct boost::enable_if&lt;mpl_::bool_&lt;false&gt;, boost::polygon::point_data&lt;int&gt; &gt;' /usr/include/boost/polygon/point_data.hpp: In instantiation of 'boost::polygon::point_data&lt;T&gt;&amp; boost::polygon::point_data&lt;T&gt;::operator=(const PointType&amp;) [with PointType = int; T = int]': /usr/include/boost/polygon/point_data.hpp:50:11: required from 'boost::polygon::point_data&lt;T&gt;::point_data(const PointType&amp;) [with PointType = int; T = int]' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/bits/stl_pair.h:125:39: required from 'constexpr std::pair&lt;_T1, _T2&gt;::pair(const std::pair&lt;_U1, _U2&gt;&amp;) [with _U1 = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;; _U2 = int; &lt;template-parameter-2-3&gt; = void; _T1 = boost::polygon::point_data&lt;int&gt;; _T2 = boost::polygon::point_data&lt;int&gt;]' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/type_traits:1305:35: required by substitution of 'template&lt;class _From1, class _To1&gt; static decltype ((__test_aux&lt;_To1&gt;(declval&lt;_From1&gt;()), std::__sfinae_types::__one())) std::__is_convertible_helper&lt;_From, _To, false&gt;::__test(int) [with _From1 = _From1; _To1 = _To1; _From = const std::pair&lt;std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, int&gt;&amp;; _To = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;] [with _From1 = const std::pair&lt;std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, int&gt;&amp;; _To1 = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;]' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/type_traits:1312:50: required from 'constexpr const bool std::__is_convertible_helper&lt;const std::pair&lt;std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, int&gt;&amp;, std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, false&gt;::value' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/type_traits:1317:12: required from 'struct std::is_convertible&lt;const std::pair&lt;std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, int&gt;&amp;, std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt; &gt;' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/type_traits:116:12: [ skipping 19 instantiation contexts, use -ftemplate-backtrace-limit=0 to disable ] /usr/include/boost/polygon/detail/polygon_arbitrary_formation.hpp:1682:11: required from 'iT boost::polygon::polygon_arbitrary_formation&lt;Unit&gt;::processEvent_(cT&amp;, iT, iT) [with cT = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; iT = __gnu_cxx::__normal_iterator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge*, std::vector&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge, std::allocator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge&gt; &gt; &gt;; Unit = int]' /usr/include/boost/polygon/detail/polygon_arbitrary_formation.hpp:1361:64: required from 'void boost::polygon::polygon_arbitrary_formation&lt;Unit&gt;::scan(cT&amp;, iT, iT) [with cT = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; iT = __gnu_cxx::__normal_iterator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge*, std::vector&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge, std::allocator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge&gt; &gt; &gt;; Unit = int]' /usr/include/boost/polygon/polygon_set_data.hpp:798:7: required from 'void boost::polygon::polygon_set_data&lt;T&gt;::get_fracture(output_container&amp;, bool, concept_type) const [with output_container = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; concept_type = boost::polygon::polygon_concept; T = int]' /usr/include/boost/polygon/polygon_set_data.hpp:781:37: required from 'void boost::polygon::polygon_set_data&lt;T&gt;::get_dispatch(output_container&amp;, boost::polygon::polygon_concept) const [with output_container = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; T = int]' /usr/include/boost/polygon/polygon_set_data.hpp:233:100: required from 'void boost::polygon::polygon_set_data&lt;T&gt;::get(output_container&amp;) const [with output_container = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; T = int]' t.cpp:11:15: required from here /usr/include/boost/polygon/polygon_traits.hpp:535:3: note: template&lt;class T1, class T2&gt; typename boost::enable_if&lt;typename boost::polygon::gtl_and&lt;typename boost::polygon::is_mutable_polygon_45_type&lt;T&gt;::type, typename boost::polygon::is_polygon_45_type&lt;T2&gt;::type&gt;::type, T1&gt;::type&amp; boost::polygon::assign(T1&amp;, const T2&amp;) assign(T1&amp; lvalue, const T2&amp; rvalue) { ^ /usr/include/boost/polygon/polygon_traits.hpp:535:3: note: template argument deduction/substitution failed: /usr/include/boost/polygon/polygon_traits.hpp: In substitution of 'template&lt;class T1, class T2&gt; typename boost::enable_if&lt;typename boost::polygon::gtl_and&lt;typename boost::polygon::is_mutable_polygon_45_type&lt;T&gt;::type, typename boost::polygon::is_polygon_45_type&lt;T2&gt;::type&gt;::type, T1&gt;::type&amp; boost::polygon::assign(T1&amp;, const T2&amp;) [with T1 = boost::polygon::point_data&lt;int&gt;; T2 = int]': /usr/include/boost/polygon/point_data.hpp:55:23: required from 'boost::polygon::point_data&lt;T&gt;&amp; boost::polygon::point_data&lt;T&gt;::operator=(const PointType&amp;) [with PointType = int; T = int]' /usr/include/boost/polygon/point_data.hpp:50:11: required from 'boost::polygon::point_data&lt;T&gt;::point_data(const PointType&amp;) [with PointType = int; T = int]' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/bits/stl_pair.h:125:39: required from 'constexpr std::pair&lt;_T1, _T2&gt;::pair(const std::pair&lt;_U1, _U2&gt;&amp;) [with _U1 = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;; _U2 = int; &lt;template-parameter-2-3&gt; = void; _T1 = boost::polygon::point_data&lt;int&gt;; _T2 = boost::polygon::point_data&lt;int&gt;]' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/type_traits:1305:35: required by substitution of 'template&lt;class _From1, class _To1&gt; static decltype ((__test_aux&lt;_To1&gt;(declval&lt;_From1&gt;()), std::__sfinae_types::__one())) std::__is_convertible_helper&lt;_From, _To, false&gt;::__test(int) [with _From1 = _From1; _To1 = _To1; _From = const std::pair&lt;std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, int&gt;&amp;; _To = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;] [with _From1 = const std::pair&lt;std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, int&gt;&amp;; _To1 = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;]' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/type_traits:1312:50: required from 'constexpr const bool std::__is_convertible_helper&lt;const std::pair&lt;std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, int&gt;&amp;, std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, false&gt;::value' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/type_traits:1317:12: [ skipping 20 instantiation contexts, use -ftemplate-backtrace-limit=0 to disable ] /usr/include/boost/polygon/detail/polygon_arbitrary_formation.hpp:1682:11: required from 'iT boost::polygon::polygon_arbitrary_formation&lt;Unit&gt;::processEvent_(cT&amp;, iT, iT) [with cT = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; iT = __gnu_cxx::__normal_iterator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge*, std::vector&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge, std::allocator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge&gt; &gt; &gt;; Unit = int]' /usr/include/boost/polygon/detail/polygon_arbitrary_formation.hpp:1361:64: required from 'void boost::polygon::polygon_arbitrary_formation&lt;Unit&gt;::scan(cT&amp;, iT, iT) [with cT = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; iT = __gnu_cxx::__normal_iterator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge*, std::vector&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge, std::allocator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge&gt; &gt; &gt;; Unit = int]' /usr/include/boost/polygon/polygon_set_data.hpp:798:7: required from 'void boost::polygon::polygon_set_data&lt;T&gt;::get_fracture(output_container&amp;, bool, concept_type) const [with output_container = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; concept_type = boost::polygon::polygon_concept; T = int]' /usr/include/boost/polygon/polygon_set_data.hpp:781:37: required from 'void boost::polygon::polygon_set_data&lt;T&gt;::get_dispatch(output_container&amp;, boost::polygon::polygon_concept) const [with output_container = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; T = int]' /usr/include/boost/polygon/polygon_set_data.hpp:233:100: required from 'void boost::polygon::polygon_set_data&lt;T&gt;::get(output_container&amp;) const [with output_container = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; T = int]' t.cpp:11:15: required from here /usr/include/boost/polygon/polygon_traits.hpp:535:3: error: no type named 'type' in 'struct boost::enable_if&lt;mpl_::bool_&lt;false&gt;, boost::polygon::point_data&lt;int&gt; &gt;' /usr/include/boost/polygon/point_data.hpp: In instantiation of 'boost::polygon::point_data&lt;T&gt;&amp; boost::polygon::point_data&lt;T&gt;::operator=(const PointType&amp;) [with PointType = int; T = int]': /usr/include/boost/polygon/point_data.hpp:50:11: required from 'boost::polygon::point_data&lt;T&gt;::point_data(const PointType&amp;) [with PointType = int; T = int]' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/bits/stl_pair.h:125:39: required from 'constexpr std::pair&lt;_T1, _T2&gt;::pair(const std::pair&lt;_U1, _U2&gt;&amp;) [with _U1 = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;; _U2 = int; &lt;template-parameter-2-3&gt; = void; _T1 = boost::polygon::point_data&lt;int&gt;; _T2 = boost::polygon::point_data&lt;int&gt;]' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/type_traits:1305:35: required by substitution of 'template&lt;class _From1, class _To1&gt; static decltype ((__test_aux&lt;_To1&gt;(declval&lt;_From1&gt;()), std::__sfinae_types::__one())) std::__is_convertible_helper&lt;_From, _To, false&gt;::__test(int) [with _From1 = _From1; _To1 = _To1; _From = const std::pair&lt;std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, int&gt;&amp;; _To = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;] [with _From1 = const std::pair&lt;std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, int&gt;&amp;; _To1 = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;]' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/type_traits:1312:50: required from 'constexpr const bool std::__is_convertible_helper&lt;const std::pair&lt;std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, int&gt;&amp;, std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, false&gt;::value' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/type_traits:1317:12: required from 'struct std::is_convertible&lt;const std::pair&lt;std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, int&gt;&amp;, std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt; &gt;' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/type_traits:116:12: [ skipping 19 instantiation contexts, use -ftemplate-backtrace-limit=0 to disable ] /usr/include/boost/polygon/detail/polygon_arbitrary_formation.hpp:1682:11: required from 'iT boost::polygon::polygon_arbitrary_formation&lt;Unit&gt;::processEvent_(cT&amp;, iT, iT) [with cT = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; iT = __gnu_cxx::__normal_iterator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge*, std::vector&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge, std::allocator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge&gt; &gt; &gt;; Unit = int]' /usr/include/boost/polygon/detail/polygon_arbitrary_formation.hpp:1361:64: required from 'void boost::polygon::polygon_arbitrary_formation&lt;Unit&gt;::scan(cT&amp;, iT, iT) [with cT = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; iT = __gnu_cxx::__normal_iterator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge*, std::vector&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge, std::allocator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge&gt; &gt; &gt;; Unit = int]' /usr/include/boost/polygon/polygon_set_data.hpp:798:7: required from 'void boost::polygon::polygon_set_data&lt;T&gt;::get_fracture(output_container&amp;, bool, concept_type) const [with output_container = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; concept_type = boost::polygon::polygon_concept; T = int]' /usr/include/boost/polygon/polygon_set_data.hpp:781:37: required from 'void boost::polygon::polygon_set_data&lt;T&gt;::get_dispatch(output_container&amp;, boost::polygon::polygon_concept) const [with output_container = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; T = int]' /usr/include/boost/polygon/polygon_set_data.hpp:233:100: required from 'void boost::polygon::polygon_set_data&lt;T&gt;::get(output_container&amp;) const [with output_container = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; T = int]' t.cpp:11:15: required from here /usr/include/boost/polygon/polygon_traits.hpp:524:3: note: template&lt;class T1, class T2&gt; typename boost::enable_if&lt;typename boost::polygon::gtl_and&lt;typename boost::polygon::is_mutable_polygon_with_holes_type&lt;T&gt;::type, typename boost::polygon::is_polygon_with_holes_type&lt;T2&gt;::type&gt;::type, T1&gt;::type&amp; boost::polygon::assign(T1&amp;, const T2&amp;) assign(T1&amp; lvalue, const T2&amp; rvalue) { ^ /usr/include/boost/polygon/polygon_traits.hpp:524:3: note: template argument deduction/substitution failed: /usr/include/boost/polygon/polygon_traits.hpp: In substitution of 'template&lt;class T1, class T2&gt; typename boost::enable_if&lt;typename boost::polygon::gtl_and&lt;typename boost::polygon::is_mutable_polygon_with_holes_type&lt;T&gt;::type, typename boost::polygon::is_polygon_with_holes_type&lt;T2&gt;::type&gt;::type, T1&gt;::type&amp; boost::polygon::assign(T1&amp;, const T2&amp;) [with T1 = boost::polygon::point_data&lt;int&gt;; T2 = int]': /usr/include/boost/polygon/point_data.hpp:55:23: required from 'boost::polygon::point_data&lt;T&gt;&amp; boost::polygon::point_data&lt;T&gt;::operator=(const PointType&amp;) [with PointType = int; T = int]' /usr/include/boost/polygon/point_data.hpp:50:11: required from 'boost::polygon::point_data&lt;T&gt;::point_data(const PointType&amp;) [with PointType = int; T = int]' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/bits/stl_pair.h:125:39: required from 'constexpr std::pair&lt;_T1, _T2&gt;::pair(const std::pair&lt;_U1, _U2&gt;&amp;) [with _U1 = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;; _U2 = int; &lt;template-parameter-2-3&gt; = void; _T1 = boost::polygon::point_data&lt;int&gt;; _T2 = boost::polygon::point_data&lt;int&gt;]' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/type_traits:1305:35: required by substitution of 'template&lt;class _From1, class _To1&gt; static decltype ((__test_aux&lt;_To1&gt;(declval&lt;_From1&gt;()), std::__sfinae_types::__one())) std::__is_convertible_helper&lt;_From, _To, false&gt;::__test(int) [with _From1 = _From1; _To1 = _To1; _From = const std::pair&lt;std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, int&gt;&amp;; _To = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;] [with _From1 = const std::pair&lt;std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, int&gt;&amp;; _To1 = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;]' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/type_traits:1312:50: required from 'constexpr const bool std::__is_convertible_helper&lt;const std::pair&lt;std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, int&gt;&amp;, std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, false&gt;::value' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/type_traits:1317:12: [ skipping 20 instantiation contexts, use -ftemplate-backtrace-limit=0 to disable ] /usr/include/boost/polygon/detail/polygon_arbitrary_formation.hpp:1682:11: required from 'iT boost::polygon::polygon_arbitrary_formation&lt;Unit&gt;::processEvent_(cT&amp;, iT, iT) [with cT = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; iT = __gnu_cxx::__normal_iterator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge*, std::vector&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge, std::allocator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge&gt; &gt; &gt;; Unit = int]' /usr/include/boost/polygon/detail/polygon_arbitrary_formation.hpp:1361:64: required from 'void boost::polygon::polygon_arbitrary_formation&lt;Unit&gt;::scan(cT&amp;, iT, iT) [with cT = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; iT = __gnu_cxx::__normal_iterator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge*, std::vector&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge, std::allocator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge&gt; &gt; &gt;; Unit = int]' /usr/include/boost/polygon/polygon_set_data.hpp:798:7: required from 'void boost::polygon::polygon_set_data&lt;T&gt;::get_fracture(output_container&amp;, bool, concept_type) const [with output_container = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; concept_type = boost::polygon::polygon_concept; T = int]' /usr/include/boost/polygon/polygon_set_data.hpp:781:37: required from 'void boost::polygon::polygon_set_data&lt;T&gt;::get_dispatch(output_container&amp;, boost::polygon::polygon_concept) const [with output_container = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; T = int]' /usr/include/boost/polygon/polygon_set_data.hpp:233:100: required from 'void boost::polygon::polygon_set_data&lt;T&gt;::get(output_container&amp;) const [with output_container = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; T = int]' t.cpp:11:15: required from here /usr/include/boost/polygon/polygon_traits.hpp:524:3: error: no type named 'type' in 'struct boost::enable_if&lt;mpl_::bool_&lt;false&gt;, boost::polygon::point_data&lt;int&gt; &gt;' /usr/include/boost/polygon/point_data.hpp: In instantiation of 'boost::polygon::point_data&lt;T&gt;&amp; boost::polygon::point_data&lt;T&gt;::operator=(const PointType&amp;) [with PointType = int; T = int]': /usr/include/boost/polygon/point_data.hpp:50:11: required from 'boost::polygon::point_data&lt;T&gt;::point_data(const PointType&amp;) [with PointType = int; T = int]' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/bits/stl_pair.h:125:39: required from 'constexpr std::pair&lt;_T1, _T2&gt;::pair(const std::pair&lt;_U1, _U2&gt;&amp;) [with _U1 = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;; _U2 = int; &lt;template-parameter-2-3&gt; = void; _T1 = boost::polygon::point_data&lt;int&gt;; _T2 = boost::polygon::point_data&lt;int&gt;]' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/type_traits:1305:35: required by substitution of 'template&lt;class _From1, class _To1&gt; static decltype ((__test_aux&lt;_To1&gt;(declval&lt;_From1&gt;()), std::__sfinae_types::__one())) std::__is_convertible_helper&lt;_From, _To, false&gt;::__test(int) [with _From1 = _From1; _To1 = _To1; _From = const std::pair&lt;std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, int&gt;&amp;; _To = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;] [with _From1 = const std::pair&lt;std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, int&gt;&amp;; _To1 = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;]' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/type_traits:1312:50: required from 'constexpr const bool std::__is_convertible_helper&lt;const std::pair&lt;std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, int&gt;&amp;, std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, false&gt;::value' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/type_traits:1317:12: required from 'struct std::is_convertible&lt;const std::pair&lt;std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, int&gt;&amp;, std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt; &gt;' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/type_traits:116:12: [ skipping 19 instantiation contexts, use -ftemplate-backtrace-limit=0 to disable ] /usr/include/boost/polygon/detail/polygon_arbitrary_formation.hpp:1682:11: required from 'iT boost::polygon::polygon_arbitrary_formation&lt;Unit&gt;::processEvent_(cT&amp;, iT, iT) [with cT = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; iT = __gnu_cxx::__normal_iterator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge*, std::vector&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge, std::allocator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge&gt; &gt; &gt;; Unit = int]' /usr/include/boost/polygon/detail/polygon_arbitrary_formation.hpp:1361:64: required from 'void boost::polygon::polygon_arbitrary_formation&lt;Unit&gt;::scan(cT&amp;, iT, iT) [with cT = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; iT = __gnu_cxx::__normal_iterator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge*, std::vector&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge, std::allocator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge&gt; &gt; &gt;; Unit = int]' /usr/include/boost/polygon/polygon_set_data.hpp:798:7: required from 'void boost::polygon::polygon_set_data&lt;T&gt;::get_fracture(output_container&amp;, bool, concept_type) const [with output_container = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; concept_type = boost::polygon::polygon_concept; T = int]' /usr/include/boost/polygon/polygon_set_data.hpp:781:37: required from 'void boost::polygon::polygon_set_data&lt;T&gt;::get_dispatch(output_container&amp;, boost::polygon::polygon_concept) const [with output_container = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; T = int]' /usr/include/boost/polygon/polygon_set_data.hpp:233:100: required from 'void boost::polygon::polygon_set_data&lt;T&gt;::get(output_container&amp;) const [with output_container = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; T = int]' t.cpp:11:15: required from here /usr/include/boost/polygon/polygon_traits.hpp:513:3: note: template&lt;class T1, class T2&gt; typename boost::enable_if&lt;typename boost::polygon::gtl_and&lt;typename boost::polygon::is_mutable_polygon_type&lt;T&gt;::type, typename boost::polygon::is_polygon_type&lt;T2&gt;::type&gt;::type, T1&gt;::type&amp; boost::polygon::assign(T1&amp;, const T2&amp;) assign(T1&amp; lvalue, const T2&amp; rvalue) { ^ /usr/include/boost/polygon/polygon_traits.hpp:513:3: note: template argument deduction/substitution failed: /usr/include/boost/polygon/polygon_traits.hpp: In substitution of 'template&lt;class T1, class T2&gt; typename boost::enable_if&lt;typename boost::polygon::gtl_and&lt;typename boost::polygon::is_mutable_polygon_type&lt;T&gt;::type, typename boost::polygon::is_polygon_type&lt;T2&gt;::type&gt;::type, T1&gt;::type&amp; boost::polygon::assign(T1&amp;, const T2&amp;) [with T1 = boost::polygon::point_data&lt;int&gt;; T2 = int]': /usr/include/boost/polygon/point_data.hpp:55:23: required from 'boost::polygon::point_data&lt;T&gt;&amp; boost::polygon::point_data&lt;T&gt;::operator=(const PointType&amp;) [with PointType = int; T = int]' /usr/include/boost/polygon/point_data.hpp:50:11: required from 'boost::polygon::point_data&lt;T&gt;::point_data(const PointType&amp;) [with PointType = int; T = int]' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/bits/stl_pair.h:125:39: required from 'constexpr std::pair&lt;_T1, _T2&gt;::pair(const std::pair&lt;_U1, _U2&gt;&amp;) [with _U1 = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;; _U2 = int; &lt;template-parameter-2-3&gt; = void; _T1 = boost::polygon::point_data&lt;int&gt;; _T2 = boost::polygon::point_data&lt;int&gt;]' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/type_traits:1305:35: required by substitution of 'template&lt;class _From1, class _To1&gt; static decltype ((__test_aux&lt;_To1&gt;(declval&lt;_From1&gt;()), std::__sfinae_types::__one())) std::__is_convertible_helper&lt;_From, _To, false&gt;::__test(int) [with _From1 = _From1; _To1 = _To1; _From = const std::pair&lt;std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, int&gt;&amp;; _To = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;] [with _From1 = const std::pair&lt;std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, int&gt;&amp;; _To1 = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;]' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/type_traits:1312:50: required from 'constexpr const bool std::__is_convertible_helper&lt;const std::pair&lt;std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, int&gt;&amp;, std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, false&gt;::value' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/type_traits:1317:12: [ skipping 20 instantiation contexts, use -ftemplate-backtrace-limit=0 to disable ] /usr/include/boost/polygon/detail/polygon_arbitrary_formation.hpp:1682:11: required from 'iT boost::polygon::polygon_arbitrary_formation&lt;Unit&gt;::processEvent_(cT&amp;, iT, iT) [with cT = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; iT = __gnu_cxx::__normal_iterator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge*, std::vector&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge, std::allocator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge&gt; &gt; &gt;; Unit = int]' /usr/include/boost/polygon/detail/polygon_arbitrary_formation.hpp:1361:64: required from 'void boost::polygon::polygon_arbitrary_formation&lt;Unit&gt;::scan(cT&amp;, iT, iT) [with cT = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; iT = __gnu_cxx::__normal_iterator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge*, std::vector&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge, std::allocator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge&gt; &gt; &gt;; Unit = int]' /usr/include/boost/polygon/polygon_set_data.hpp:798:7: required from 'void boost::polygon::polygon_set_data&lt;T&gt;::get_fracture(output_container&amp;, bool, concept_type) const [with output_container = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; concept_type = boost::polygon::polygon_concept; T = int]' /usr/include/boost/polygon/polygon_set_data.hpp:781:37: required from 'void boost::polygon::polygon_set_data&lt;T&gt;::get_dispatch(output_container&amp;, boost::polygon::polygon_concept) const [with output_container = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; T = int]' /usr/include/boost/polygon/polygon_set_data.hpp:233:100: required from 'void boost::polygon::polygon_set_data&lt;T&gt;::get(output_container&amp;) const [with output_container = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; T = int]' t.cpp:11:15: required from here /usr/include/boost/polygon/polygon_traits.hpp:513:3: error: no type named 'type' in 'struct boost::enable_if&lt;mpl_::bool_&lt;false&gt;, boost::polygon::point_data&lt;int&gt; &gt;' In file included from /usr/include/boost/polygon/segment_data.hpp:16:0, from /usr/include/boost/polygon/polygon.hpp:32, from t.cpp:3: /usr/include/boost/polygon/point_data.hpp: In instantiation of 'boost::polygon::point_data&lt;T&gt;&amp; boost::polygon::point_data&lt;T&gt;::operator=(const PointType&amp;) [with PointType = int; T = int]': /usr/include/boost/polygon/point_data.hpp:50:11: required from 'boost::polygon::point_data&lt;T&gt;::point_data(const PointType&amp;) [with PointType = int; T = int]' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/bits/stl_pair.h:125:39: required from 'constexpr std::pair&lt;_T1, _T2&gt;::pair(const std::pair&lt;_U1, _U2&gt;&amp;) [with _U1 = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;; _U2 = int; &lt;template-parameter-2-3&gt; = void; _T1 = boost::polygon::point_data&lt;int&gt;; _T2 = boost::polygon::point_data&lt;int&gt;]' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/type_traits:1305:35: required by substitution of 'template&lt;class _From1, class _To1&gt; static decltype ((__test_aux&lt;_To1&gt;(declval&lt;_From1&gt;()), std::__sfinae_types::__one())) std::__is_convertible_helper&lt;_From, _To, false&gt;::__test(int) [with _From1 = _From1; _To1 = _To1; _From = const std::pair&lt;std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, int&gt;&amp;; _To = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;] [with _From1 = const std::pair&lt;std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, int&gt;&amp;; _To1 = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;]' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/type_traits:1312:50: required from 'constexpr const bool std::__is_convertible_helper&lt;const std::pair&lt;std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, int&gt;&amp;, std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, false&gt;::value' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/type_traits:1317:12: required from 'struct std::is_convertible&lt;const std::pair&lt;std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, int&gt;&amp;, std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt; &gt;' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/type_traits:116:12: [ skipping 19 instantiation contexts, use -ftemplate-backtrace-limit=0 to disable ] /usr/include/boost/polygon/detail/polygon_arbitrary_formation.hpp:1682:11: required from 'iT boost::polygon::polygon_arbitrary_formation&lt;Unit&gt;::processEvent_(cT&amp;, iT, iT) [with cT = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; iT = __gnu_cxx::__normal_iterator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge*, std::vector&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge, std::allocator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge&gt; &gt; &gt;; Unit = int]' /usr/include/boost/polygon/detail/polygon_arbitrary_formation.hpp:1361:64: required from 'void boost::polygon::polygon_arbitrary_formation&lt;Unit&gt;::scan(cT&amp;, iT, iT) [with cT = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; iT = __gnu_cxx::__normal_iterator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge*, std::vector&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge, std::allocator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge&gt; &gt; &gt;; Unit = int]' /usr/include/boost/polygon/polygon_set_data.hpp:798:7: required from 'void boost::polygon::polygon_set_data&lt;T&gt;::get_fracture(output_container&amp;, bool, concept_type) const [with output_container = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; concept_type = boost::polygon::polygon_concept; T = int]' /usr/include/boost/polygon/polygon_set_data.hpp:781:37: required from 'void boost::polygon::polygon_set_data&lt;T&gt;::get_dispatch(output_container&amp;, boost::polygon::polygon_concept) const [with output_container = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; T = int]' /usr/include/boost/polygon/polygon_set_data.hpp:233:100: required from 'void boost::polygon::polygon_set_data&lt;T&gt;::get(output_container&amp;) const [with output_container = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; T = int]' t.cpp:11:15: required from here /usr/include/boost/polygon/segment_concept.hpp:188:18: note: template&lt;class Segment1, class Segment2&gt; typename boost::enable_if&lt;typename boost::polygon::gtl_and_3&lt;boost::polygon::y_s_assign, typename boost::polygon::is_mutable_segment_concept&lt;typename boost::polygon::geometry_concept&lt;T&gt;::type&gt;::type, typename boost::polygon::is_segment_concept&lt;typename boost::polygon::geometry_concept&lt;PointType2&gt;::type&gt;::type&gt;::type, Segment1&gt;::type&amp; boost::polygon::assign(Segment1&amp;, const Segment2&amp;) Segment1&gt;::type&amp; assign(Segment1&amp; segment1, const Segment2&amp; segment2) { ^ /usr/include/boost/polygon/segment_concept.hpp:188:18: note: template argument deduction/substitution failed: /usr/include/boost/polygon/segment_concept.hpp: In substitution of 'template&lt;class Segment1, class Segment2&gt; typename boost::enable_if&lt;typename boost::polygon::gtl_and_3&lt;boost::polygon::y_s_assign, typename boost::polygon::is_mutable_segment_concept&lt;typename boost::polygon::geometry_concept&lt;T&gt;::type&gt;::type, typename boost::polygon::is_segment_concept&lt;typename boost::polygon::geometry_concept&lt;PointType2&gt;::type&gt;::type&gt;::type, Segment1&gt;::type&amp; boost::polygon::assign(Segment1&amp;, const Segment2&amp;) [with Segment1 = boost::polygon::point_data&lt;int&gt;; Segment2 = int]': /usr/include/boost/polygon/point_data.hpp:55:23: required from 'boost::polygon::point_data&lt;T&gt;&amp; boost::polygon::point_data&lt;T&gt;::operator=(const PointType&amp;) [with PointType = int; T = int]' /usr/include/boost/polygon/point_data.hpp:50:11: required from 'boost::polygon::point_data&lt;T&gt;::point_data(const PointType&amp;) [with PointType = int; T = int]' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/bits/stl_pair.h:125:39: required from 'constexpr std::pair&lt;_T1, _T2&gt;::pair(const std::pair&lt;_U1, _U2&gt;&amp;) [with _U1 = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;; _U2 = int; &lt;template-parameter-2-3&gt; = void; _T1 = boost::polygon::point_data&lt;int&gt;; _T2 = boost::polygon::point_data&lt;int&gt;]' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/type_traits:1305:35: required by substitution of 'template&lt;class _From1, class _To1&gt; static decltype ((__test_aux&lt;_To1&gt;(declval&lt;_From1&gt;()), std::__sfinae_types::__one())) std::__is_convertible_helper&lt;_From, _To, false&gt;::__test(int) [with _From1 = _From1; _To1 = _To1; _From = const std::pair&lt;std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, int&gt;&amp;; _To = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;] [with _From1 = const std::pair&lt;std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, int&gt;&amp;; _To1 = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;]' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/type_traits:1312:50: required from 'constexpr const bool std::__is_convertible_helper&lt;const std::pair&lt;std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, int&gt;&amp;, std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, false&gt;::value' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/type_traits:1317:12: [ skipping 20 instantiation contexts, use -ftemplate-backtrace-limit=0 to disable ] /usr/include/boost/polygon/detail/polygon_arbitrary_formation.hpp:1682:11: required from 'iT boost::polygon::polygon_arbitrary_formation&lt;Unit&gt;::processEvent_(cT&amp;, iT, iT) [with cT = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; iT = __gnu_cxx::__normal_iterator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge*, std::vector&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge, std::allocator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge&gt; &gt; &gt;; Unit = int]' /usr/include/boost/polygon/detail/polygon_arbitrary_formation.hpp:1361:64: required from 'void boost::polygon::polygon_arbitrary_formation&lt;Unit&gt;::scan(cT&amp;, iT, iT) [with cT = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; iT = __gnu_cxx::__normal_iterator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge*, std::vector&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge, std::allocator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge&gt; &gt; &gt;; Unit = int]' /usr/include/boost/polygon/polygon_set_data.hpp:798:7: required from 'void boost::polygon::polygon_set_data&lt;T&gt;::get_fracture(output_container&amp;, bool, concept_type) const [with output_container = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; concept_type = boost::polygon::polygon_concept; T = int]' /usr/include/boost/polygon/polygon_set_data.hpp:781:37: required from 'void boost::polygon::polygon_set_data&lt;T&gt;::get_dispatch(output_container&amp;, boost::polygon::polygon_concept) const [with output_container = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; T = int]' /usr/include/boost/polygon/polygon_set_data.hpp:233:100: required from 'void boost::polygon::polygon_set_data&lt;T&gt;::get(output_container&amp;) const [with output_container = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; T = int]' t.cpp:11:15: required from here /usr/include/boost/polygon/segment_concept.hpp:188:18: error: no type named 'type' in 'struct boost::enable_if&lt;mpl_::bool_&lt;false&gt;, boost::polygon::point_data&lt;int&gt; &gt;' In file included from /usr/include/boost/polygon/polygon.hpp:29:0, from t.cpp:3: /usr/include/boost/polygon/point_data.hpp: In instantiation of 'boost::polygon::point_data&lt;T&gt;&amp; boost::polygon::point_data&lt;T&gt;::operator=(const PointType&amp;) [with PointType = int; T = int]': /usr/include/boost/polygon/point_data.hpp:50:11: required from 'boost::polygon::point_data&lt;T&gt;::point_data(const PointType&amp;) [with PointType = int; T = int]' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/bits/stl_pair.h:125:39: required from 'constexpr std::pair&lt;_T1, _T2&gt;::pair(const std::pair&lt;_U1, _U2&gt;&amp;) [with _U1 = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;; _U2 = int; &lt;template-parameter-2-3&gt; = void; _T1 = boost::polygon::point_data&lt;int&gt;; _T2 = boost::polygon::point_data&lt;int&gt;]' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/type_traits:1305:35: required by substitution of 'template&lt;class _From1, class _To1&gt; static decltype ((__test_aux&lt;_To1&gt;(declval&lt;_From1&gt;()), std::__sfinae_types::__one())) std::__is_convertible_helper&lt;_From, _To, false&gt;::__test(int) [with _From1 = _From1; _To1 = _To1; _From = const std::pair&lt;std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, int&gt;&amp;; _To = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;] [with _From1 = const std::pair&lt;std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, int&gt;&amp;; _To1 = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;]' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/type_traits:1312:50: required from 'constexpr const bool std::__is_convertible_helper&lt;const std::pair&lt;std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, int&gt;&amp;, std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, false&gt;::value' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/type_traits:1317:12: required from 'struct std::is_convertible&lt;const std::pair&lt;std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, int&gt;&amp;, std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt; &gt;' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/type_traits:116:12: [ skipping 19 instantiation contexts, use -ftemplate-backtrace-limit=0 to disable ] /usr/include/boost/polygon/detail/polygon_arbitrary_formation.hpp:1682:11: required from 'iT boost::polygon::polygon_arbitrary_formation&lt;Unit&gt;::processEvent_(cT&amp;, iT, iT) [with cT = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; iT = __gnu_cxx::__normal_iterator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge*, std::vector&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge, std::allocator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge&gt; &gt; &gt;; Unit = int]' /usr/include/boost/polygon/detail/polygon_arbitrary_formation.hpp:1361:64: required from 'void boost::polygon::polygon_arbitrary_formation&lt;Unit&gt;::scan(cT&amp;, iT, iT) [with cT = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; iT = __gnu_cxx::__normal_iterator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge*, std::vector&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge, std::allocator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge&gt; &gt; &gt;; Unit = int]' /usr/include/boost/polygon/polygon_set_data.hpp:798:7: required from 'void boost::polygon::polygon_set_data&lt;T&gt;::get_fracture(output_container&amp;, bool, concept_type) const [with output_container = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; concept_type = boost::polygon::polygon_concept; T = int]' /usr/include/boost/polygon/polygon_set_data.hpp:781:37: required from 'void boost::polygon::polygon_set_data&lt;T&gt;::get_dispatch(output_container&amp;, boost::polygon::polygon_concept) const [with output_container = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; T = int]' /usr/include/boost/polygon/polygon_set_data.hpp:233:100: required from 'void boost::polygon::polygon_set_data&lt;T&gt;::get(output_container&amp;) const [with output_container = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; T = int]' t.cpp:11:15: required from here /usr/include/boost/polygon/rectangle_concept.hpp:192:3: note: template&lt;class rectangle_type_1, class rectangle_type_2&gt; typename boost::enable_if&lt;typename boost::polygon::gtl_and_3&lt;boost::polygon::y_r_assign, typename boost::polygon::is_mutable_rectangle_concept&lt;typename boost::polygon::geometry_concept&lt;T&gt;::type&gt;::type, typename boost::polygon::is_rectangle_concept&lt;typename boost::polygon::geometry_concept&lt;PointType2&gt;::type&gt;::type&gt;::type, rectangle_type_1&gt;::type&amp; boost::polygon::assign(rectangle_type_1&amp;, const rectangle_type_2&amp;) assign(rectangle_type_1&amp; lvalue, const rectangle_type_2&amp; rvalue) { ^ /usr/include/boost/polygon/rectangle_concept.hpp:192:3: note: template argument deduction/substitution failed: /usr/include/boost/polygon/rectangle_concept.hpp: In substitution of 'template&lt;class rectangle_type_1, class rectangle_type_2&gt; typename boost::enable_if&lt;typename boost::polygon::gtl_and_3&lt;boost::polygon::y_r_assign, typename boost::polygon::is_mutable_rectangle_concept&lt;typename boost::polygon::geometry_concept&lt;T&gt;::type&gt;::type, typename boost::polygon::is_rectangle_concept&lt;typename boost::polygon::geometry_concept&lt;PointType2&gt;::type&gt;::type&gt;::type, rectangle_type_1&gt;::type&amp; boost::polygon::assign(rectangle_type_1&amp;, const rectangle_type_2&amp;) [with rectangle_type_1 = boost::polygon::point_data&lt;int&gt;; rectangle_type_2 = int]': /usr/include/boost/polygon/point_data.hpp:55:23: required from 'boost::polygon::point_data&lt;T&gt;&amp; boost::polygon::point_data&lt;T&gt;::operator=(const PointType&amp;) [with PointType = int; T = int]' /usr/include/boost/polygon/point_data.hpp:50:11: required from 'boost::polygon::point_data&lt;T&gt;::point_data(const PointType&amp;) [with PointType = int; T = int]' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/bits/stl_pair.h:125:39: required from 'constexpr std::pair&lt;_T1, _T2&gt;::pair(const std::pair&lt;_U1, _U2&gt;&amp;) [with _U1 = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;; _U2 = int; &lt;template-parameter-2-3&gt; = void; _T1 = boost::polygon::point_data&lt;int&gt;; _T2 = boost::polygon::point_data&lt;int&gt;]' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/type_traits:1305:35: required by substitution of 'template&lt;class _From1, class _To1&gt; static decltype ((__test_aux&lt;_To1&gt;(declval&lt;_From1&gt;()), std::__sfinae_types::__one())) std::__is_convertible_helper&lt;_From, _To, false&gt;::__test(int) [with _From1 = _From1; _To1 = _To1; _From = const std::pair&lt;std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, int&gt;&amp;; _To = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;] [with _From1 = const std::pair&lt;std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, int&gt;&amp;; _To1 = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;]' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/type_traits:1312:50: required from 'constexpr const bool std::__is_convertible_helper&lt;const std::pair&lt;std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, int&gt;&amp;, std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, false&gt;::value' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/type_traits:1317:12: [ skipping 20 instantiation contexts, use -ftemplate-backtrace-limit=0 to disable ] /usr/include/boost/polygon/detail/polygon_arbitrary_formation.hpp:1682:11: required from 'iT boost::polygon::polygon_arbitrary_formation&lt;Unit&gt;::processEvent_(cT&amp;, iT, iT) [with cT = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; iT = __gnu_cxx::__normal_iterator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge*, std::vector&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge, std::allocator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge&gt; &gt; &gt;; Unit = int]' /usr/include/boost/polygon/detail/polygon_arbitrary_formation.hpp:1361:64: required from 'void boost::polygon::polygon_arbitrary_formation&lt;Unit&gt;::scan(cT&amp;, iT, iT) [with cT = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; iT = __gnu_cxx::__normal_iterator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge*, std::vector&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge, std::allocator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge&gt; &gt; &gt;; Unit = int]' /usr/include/boost/polygon/polygon_set_data.hpp:798:7: required from 'void boost::polygon::polygon_set_data&lt;T&gt;::get_fracture(output_container&amp;, bool, concept_type) const [with output_container = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; concept_type = boost::polygon::polygon_concept; T = int]' /usr/include/boost/polygon/polygon_set_data.hpp:781:37: required from 'void boost::polygon::polygon_set_data&lt;T&gt;::get_dispatch(output_container&amp;, boost::polygon::polygon_concept) const [with output_container = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; T = int]' /usr/include/boost/polygon/polygon_set_data.hpp:233:100: required from 'void boost::polygon::polygon_set_data&lt;T&gt;::get(output_container&amp;) const [with output_container = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; T = int]' t.cpp:11:15: required from here /usr/include/boost/polygon/rectangle_concept.hpp:192:3: error: no type named 'type' in 'struct boost::enable_if&lt;mpl_::bool_&lt;false&gt;, boost::polygon::point_data&lt;int&gt; &gt;' In file included from /usr/include/boost/polygon/interval_data.hpp:16:0, from /usr/include/boost/polygon/polygon.hpp:22, from t.cpp:3: /usr/include/boost/polygon/point_data.hpp: In instantiation of 'boost::polygon::point_data&lt;T&gt;&amp; boost::polygon::point_data&lt;T&gt;::operator=(const PointType&amp;) [with PointType = int; T = int]': /usr/include/boost/polygon/point_data.hpp:50:11: required from 'boost::polygon::point_data&lt;T&gt;::point_data(const PointType&amp;) [with PointType = int; T = int]' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/bits/stl_pair.h:125:39: required from 'constexpr std::pair&lt;_T1, _T2&gt;::pair(const std::pair&lt;_U1, _U2&gt;&amp;) [with _U1 = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;; _U2 = int; &lt;template-parameter-2-3&gt; = void; _T1 = boost::polygon::point_data&lt;int&gt;; _T2 = boost::polygon::point_data&lt;int&gt;]' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/type_traits:1305:35: required by substitution of 'template&lt;class _From1, class _To1&gt; static decltype ((__test_aux&lt;_To1&gt;(declval&lt;_From1&gt;()), std::__sfinae_types::__one())) std::__is_convertible_helper&lt;_From, _To, false&gt;::__test(int) [with _From1 = _From1; _To1 = _To1; _From = const std::pair&lt;std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, int&gt;&amp;; _To = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;] [with _From1 = const std::pair&lt;std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, int&gt;&amp;; _To1 = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;]' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/type_traits:1312:50: required from 'constexpr const bool std::__is_convertible_helper&lt;const std::pair&lt;std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, int&gt;&amp;, std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, false&gt;::value' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/type_traits:1317:12: required from 'struct std::is_convertible&lt;const std::pair&lt;std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, int&gt;&amp;, std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt; &gt;' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/type_traits:116:12: [ skipping 19 instantiation contexts, use -ftemplate-backtrace-limit=0 to disable ] /usr/include/boost/polygon/detail/polygon_arbitrary_formation.hpp:1682:11: required from 'iT boost::polygon::polygon_arbitrary_formation&lt;Unit&gt;::processEvent_(cT&amp;, iT, iT) [with cT = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; iT = __gnu_cxx::__normal_iterator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge*, std::vector&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge, std::allocator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge&gt; &gt; &gt;; Unit = int]' /usr/include/boost/polygon/detail/polygon_arbitrary_formation.hpp:1361:64: required from 'void boost::polygon::polygon_arbitrary_formation&lt;Unit&gt;::scan(cT&amp;, iT, iT) [with cT = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; iT = __gnu_cxx::__normal_iterator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge*, std::vector&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge, std::allocator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge&gt; &gt; &gt;; Unit = int]' /usr/include/boost/polygon/polygon_set_data.hpp:798:7: required from 'void boost::polygon::polygon_set_data&lt;T&gt;::get_fracture(output_container&amp;, bool, concept_type) const [with output_container = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; concept_type = boost::polygon::polygon_concept; T = int]' /usr/include/boost/polygon/polygon_set_data.hpp:781:37: required from 'void boost::polygon::polygon_set_data&lt;T&gt;::get_dispatch(output_container&amp;, boost::polygon::polygon_concept) const [with output_container = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; T = int]' /usr/include/boost/polygon/polygon_set_data.hpp:233:100: required from 'void boost::polygon::polygon_set_data&lt;T&gt;::get(output_container&amp;) const [with output_container = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; T = int]' t.cpp:11:15: required from here /usr/include/boost/polygon/interval_concept.hpp:168:10: note: template&lt;class IntervalType1, class IntervalType2&gt; typename boost::enable_if&lt;typename boost::polygon::gtl_and_3&lt;boost::polygon::y_i_assign, typename boost::polygon::is_mutable_interval_concept&lt;typename boost::polygon::geometry_concept&lt;T&gt;::type&gt;::type, typename boost::polygon::is_interval_concept&lt;typename boost::polygon::geometry_concept&lt;PointType2&gt;::type&gt;::type&gt;::type, IntervalType1&gt;::type&amp; boost::polygon::assign(IntervalType1&amp;, const IntervalType2&amp;) &gt;::type&amp; assign(IntervalType1&amp; lvalue, const IntervalType2&amp; rvalue) { ^ /usr/include/boost/polygon/interval_concept.hpp:168:10: note: template argument deduction/substitution failed: /usr/include/boost/polygon/interval_concept.hpp: In substitution of 'template&lt;class IntervalType1, class IntervalType2&gt; typename boost::enable_if&lt;typename boost::polygon::gtl_and_3&lt;boost::polygon::y_i_assign, typename boost::polygon::is_mutable_interval_concept&lt;typename boost::polygon::geometry_concept&lt;T&gt;::type&gt;::type, typename boost::polygon::is_interval_concept&lt;typename boost::polygon::geometry_concept&lt;PointType2&gt;::type&gt;::type&gt;::type, IntervalType1&gt;::type&amp; boost::polygon::assign(IntervalType1&amp;, const IntervalType2&amp;) [with IntervalType1 = boost::polygon::point_data&lt;int&gt;; IntervalType2 = int]': /usr/include/boost/polygon/point_data.hpp:55:23: required from 'boost::polygon::point_data&lt;T&gt;&amp; boost::polygon::point_data&lt;T&gt;::operator=(const PointType&amp;) [with PointType = int; T = int]' /usr/include/boost/polygon/point_data.hpp:50:11: required from 'boost::polygon::point_data&lt;T&gt;::point_data(const PointType&amp;) [with PointType = int; T = int]' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/bits/stl_pair.h:125:39: required from 'constexpr std::pair&lt;_T1, _T2&gt;::pair(const std::pair&lt;_U1, _U2&gt;&amp;) [with _U1 = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;; _U2 = int; &lt;template-parameter-2-3&gt; = void; _T1 = boost::polygon::point_data&lt;int&gt;; _T2 = boost::polygon::point_data&lt;int&gt;]' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/type_traits:1305:35: required by substitution of 'template&lt;class _From1, class _To1&gt; static decltype ((__test_aux&lt;_To1&gt;(declval&lt;_From1&gt;()), std::__sfinae_types::__one())) std::__is_convertible_helper&lt;_From, _To, false&gt;::__test(int) [with _From1 = _From1; _To1 = _To1; _From = const std::pair&lt;std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, int&gt;&amp;; _To = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;] [with _From1 = const std::pair&lt;std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, int&gt;&amp;; _To1 = std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;]' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/type_traits:1312:50: required from 'constexpr const bool std::__is_convertible_helper&lt;const std::pair&lt;std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, int&gt;&amp;, std::pair&lt;boost::polygon::point_data&lt;int&gt;, boost::polygon::point_data&lt;int&gt; &gt;, false&gt;::value' /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/include/g++-v4/type_traits:1317:12: [ skipping 20 instantiation contexts, use -ftemplate-backtrace-limit=0 to disable ] /usr/include/boost/polygon/detail/polygon_arbitrary_formation.hpp:1682:11: required from 'iT boost::polygon::polygon_arbitrary_formation&lt;Unit&gt;::processEvent_(cT&amp;, iT, iT) [with cT = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; iT = __gnu_cxx::__normal_iterator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge*, std::vector&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge, std::allocator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge&gt; &gt; &gt;; Unit = int]' /usr/include/boost/polygon/detail/polygon_arbitrary_formation.hpp:1361:64: required from 'void boost::polygon::polygon_arbitrary_formation&lt;Unit&gt;::scan(cT&amp;, iT, iT) [with cT = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; iT = __gnu_cxx::__normal_iterator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge*, std::vector&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge, std::allocator&lt;boost::polygon::scanline_base&lt;int&gt;::vertex_half_edge&gt; &gt; &gt;; Unit = int]' /usr/include/boost/polygon/polygon_set_data.hpp:798:7: required from 'void boost::polygon::polygon_set_data&lt;T&gt;::get_fracture(output_container&amp;, bool, concept_type) const [with output_container = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; concept_type = boost::polygon::polygon_concept; T = int]' /usr/include/boost/polygon/polygon_set_data.hpp:781:37: required from 'void boost::polygon::polygon_set_data&lt;T&gt;::get_dispatch(output_container&amp;, boost::polygon::polygon_concept) const [with output_container = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; T = int]' /usr/include/boost/polygon/polygon_set_data.hpp:233:100: required from 'void boost::polygon::polygon_set_data&lt;T&gt;::get(output_container&amp;) const [with output_container = std::vector&lt;boost::polygon::polygon_data&lt;int&gt; &gt;; T = int]' t.cpp:11:15: required from here /usr/include/boost/polygon/interval_concept.hpp:168:10: error: no type named 'type' in 'struct boost::enable_if&lt;mpl_::bool_&lt;false&gt;, boost::polygon::point_data&lt;int&gt; &gt;' </pre> en-us Boost C++ Libraries /htdocs/site/boost.png https://svn.boost.org/trac10/ticket/10531 Trac 1.4.3 anonymous Tue, 23 Sep 2014 18:27:05 GMT component changed; owner set https://svn.boost.org/trac10/ticket/10531#comment:1 https://svn.boost.org/trac10/ticket/10531#comment:1 <ul> <li><strong>owner</strong> set to <span class="trac-author">Peter Dimov</span> </li> <li><strong>component</strong> <span class="trac-field-old">None</span> → <span class="trac-field-new">core</span> </li> </ul> <p> Changed to "core" component since it appears to be the missing type in enable_if? </p> Ticket Peter Dimov Tue, 23 Sep 2014 21:19:03 GMT <link>https://svn.boost.org/trac10/ticket/10531#comment:2 </link> <guid isPermaLink="false">https://svn.boost.org/trac10/ticket/10531#comment:2</guid> <description> <p> I haven't much idea what's causing this error, but I doubt that it's anything to do with core. The lack of ::type is the whole point of enable_if, and enable_if hasn't changed. </p> </description> <category>Ticket</category> </item> <item> <author>fiesh@…</author> <pubDate>Wed, 24 Sep 2014 07:59:14 GMT</pubDate> <title>owner, component changed https://svn.boost.org/trac10/ticket/10531#comment:3 https://svn.boost.org/trac10/ticket/10531#comment:3 <ul> <li><strong>owner</strong> changed from <span class="trac-author">Peter Dimov</span> to <span class="trac-author">Lucanus Simonson</span> </li> <li><strong>component</strong> <span class="trac-field-old">core</span> → <span class="trac-field-new">polygon</span> </li> </ul> <p> I suppose it makes sense to reassign this to boost::polygon then in lack of a better alternative. Thanks for the input. </p> Ticket fiesh@… Wed, 24 Sep 2014 08:55:33 GMT <link>https://svn.boost.org/trac10/ticket/10531#comment:4 </link> <guid isPermaLink="false">https://svn.boost.org/trac10/ticket/10531#comment:4</guid> <description> <p> It also does not work with gcc 4.9.1. However, it does compile successfully with clang 3.4.2. Could it be a compiler bug that is triggered only now? </p> </description> <category>Ticket</category> </item> <item> <author>fiesh@…</author> <pubDate>Wed, 24 Sep 2014 15:46:44 GMT</pubDate> <title/> <link>https://svn.boost.org/trac10/ticket/10531#comment:5 </link> <guid isPermaLink="false">https://svn.boost.org/trac10/ticket/10531#comment:5</guid> <description> <p> Appears to be a compiler bug that just happened to be triggered by 1.56.0: [Can't add link here, gcc bug <a class="missing ticket">#63356</a>, because captcha is broken on this site and links are treated as spam] </p> <p> Please close! </p> </description> <category>Ticket</category> </item> <item> <dc:creator>Andrii Sydorchuk</dc:creator> <pubDate>Mon, 29 Sep 2014 19:43:42 GMT</pubDate> <title>owner, status changed https://svn.boost.org/trac10/ticket/10531#comment:6 https://svn.boost.org/trac10/ticket/10531#comment:6 <ul> <li><strong>owner</strong> changed from <span class="trac-author">Lucanus Simonson</span> to <span class="trac-author">Andrii Sydorchuk</span> </li> <li><strong>status</strong> <span class="trac-field-old">new</span> → <span class="trac-field-new">assigned</span> </li> </ul> Ticket Andrii Sydorchuk Wed, 17 Dec 2014 20:45:18 GMT status changed; resolution set https://svn.boost.org/trac10/ticket/10531#comment:7 https://svn.boost.org/trac10/ticket/10531#comment:7 <ul> <li><strong>status</strong> <span class="trac-field-old">assigned</span> → <span class="trac-field-new">closed</span> </li> <li><strong>resolution</strong> → <span class="trac-field-new">wontfix</span> </li> </ul> <p> I am closing this one as suggested in the comment above. Please reopen if you think otherwise. </p> Ticket fiesh@… Wed, 04 Feb 2015 15:25:02 GMT attachment set https://svn.boost.org/trac10/ticket/10531 https://svn.boost.org/trac10/ticket/10531 <ul> <li><strong>attachment</strong> → <span class="trac-field-new">boost_polygon.patch</span> </li> </ul> <p> Patch to work around the GCC bug </p> Ticket fiesh@… Wed, 04 Feb 2015 15:28:28 GMT status, type changed; resolution deleted https://svn.boost.org/trac10/ticket/10531#comment:8 https://svn.boost.org/trac10/ticket/10531#comment:8 <ul> <li><strong>status</strong> <span class="trac-field-old">closed</span> → <span class="trac-field-new">reopened</span> </li> <li><strong>type</strong> <span class="trac-field-old">Bugs</span> → <span class="trac-field-new">Patches</span> </li> <li><strong>resolution</strong> <span class="trac-field-deleted">wontfix</span> </li> </ul> <p> The above patch was mailed to me by Alexander Kalugin. It works around the GCC bug by marking point_data() explicit when <span class="underline">GNUC</span> is defined. It would be great if the patch could be accepted to mitigate the GCC problem here. </p> Ticket fiesh@… Thu, 05 Feb 2015 17:43:35 GMT <link>https://svn.boost.org/trac10/ticket/10531#comment:9 </link> <guid isPermaLink="false">https://svn.boost.org/trac10/ticket/10531#comment:9</guid> <description> <p> Merged on github in github.com/boostorg/polygon/commit/634aa3de29d63dcf02a478ca2b5045c5e9ccb7e0 </p> <p> Should be closed therefore. </p> </description> <category>Ticket</category> </item> <item> <dc:creator>Andrii Sydorchuk</dc:creator> <pubDate>Sun, 08 Feb 2015 22:11:40 GMT</pubDate> <title>status, severity, milestone changed; resolution set https://svn.boost.org/trac10/ticket/10531#comment:10 https://svn.boost.org/trac10/ticket/10531#comment:10 <ul> <li><strong>status</strong> <span class="trac-field-old">reopened</span> → <span class="trac-field-new">closed</span> </li> <li><strong>resolution</strong> → <span class="trac-field-new">fixed</span> </li> <li><strong>severity</strong> <span class="trac-field-old">Regression</span> → <span class="trac-field-new">Problem</span> </li> <li><strong>milestone</strong> <span class="trac-field-old">To Be Determined</span> → <span class="trac-field-new">Boost 1.58.0</span> </li> </ul> <p> Thanks for the follow up. </p> Ticket