Boost logo

Boost Users :

Subject: [Boost-users] [geometry][container][intrusive] boost 1.55, VC++2013 update 1 Build fail
From: Adam Wulkiewicz (adam.wulkiewicz_at_[hidden])
Date: 2014-02-20 08:54:57


Hi,

乔志强 wrote:
> I create a Visual Studio 2013 update 1 VC++ Win32 Console Application project, and copy the example from
> boost_1_55_0\libs\geometry\doc\html\geometry\spatial_indexes\rtree_examples\quick_start.html to a file(delete all codes first),
> set Precompiled Headers to Not Using Precompiled Headers, then build. But build failed.
>
> I change the platform toolset from Visual Studio 2013 (v120) to Visual Studio 2010 (v100), then build successfully.
>
> Is it a bug ?

I can reproduce it.

The possible bug is deeper than in Geometry. E.g. this simple code fails
to compile on VS2013 (used Container and Intrusive from 1.55 and develop
branch, compiler output below):

#include <boost/container/vector.hpp>

int main()
{
boost::container::vector<int> v;
}

Regards,
Adam

1>------ Build started: Project: test13, Configuration: Release Win32 ------
1> main.cpp
1>D:\lib\boost_1_55_0\boost/intrusive/detail/has_member_function_callable_with.hpp(200):
error C2228: left of '.select_on_container_copy_construction' must have
class/struct/union
1> type is 'boost::move_detail::add_rvalue_reference<U>::type'
1>
D:\lib\boost_1_55_0\boost/intrusive/detail/has_member_function_callable_with.hpp(276)
: see reference to class template instantiation
'boost::container::container_detail::has_member_function_callable_with_select_on_container_copy_construction_impl<Fun,true,>'
being compiled
1> with
1> [
1> Fun=std::allocator<int>
1> ]
1> D:\lib\boost_1_55_0\boost/container/allocator_traits.hpp(262) : see
reference to class template instantiation
'boost::container::container_detail::has_member_function_callable_with_select_on_container_copy_construction<const
Alloc,>' being compiled
1> with
1> [
1> Alloc=std::allocator<int>
1> ]
1> D:\lib\boost_1_55_0\boost/container/vector.hpp(276) : see reference
to class template instantiation
'boost::container::allocator_traits<Allocator>' being compiled
1> with
1> [
1> Allocator=std::allocator<int>
1> ]
1> D:\lib\boost_1_55_0\boost/container/vector.hpp(550) : see reference
to class template instantiation
'boost::container::container_detail::vector_alloc_holder<Allocator,boost::container::container_detail::integral_constant<unsigned
int,1>>' being compiled
1> with
1> [
1> Allocator=std::allocator<int>
1> ]
1> main.cpp(5) : see reference to class template instantiation
'boost::container::vector<int,std::allocator<T>>' being compiled
1> with
1> [
1> T=int
1> ]
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========

>
> Visual Studio 2013 (v120) error message:
> 1>------ Rebuild All started: Project: ConsoleApplication1, Configuration: Debug Win32 ------
> 1> ConsoleApplication1.cpp
> 1>c:\users\qiaozhiqiang\documents\visual studio 2013\projects\consoleapplication1\consoleapplication1\consoleapplication1.cpp(30): warning C4244: 'argument' : conversion from 'unsigned int' to 'const float', possible loss of data
> 1>d:\qzq\boost_1_55_0\boost\intrusive\detail\has_member_function_callable_with.hpp(200): error C2228: left of '.select_on_container_copy_construction' must have class/struct/union
> 1> type is 'boost::move_detail::add_rvalue_reference<U>::type'
> 1> d:\qzq\boost_1_55_0\boost\intrusive\detail\has_member_function_callable_with.hpp(276) : see reference to class template instantiation 'boost::container::container_detail::has_member_function_callable_with_select_on_container_copy_construction_impl<Fun,true,>' being compiled
> 1> with
> 1> [
> 1> Fun=std::allocator<boost::geometry::index::detail::rtree::dynamic_leaf<std::pair<box,unsigned int>,boost::geometry::index::quadratic<16,4>,boost::geometry::model::box<point>,boost::geometry::index::detail::rtree::allocators<std::allocator<value>,std::pair<box,unsigned int>,boost::geometry::index::quadratic<16,4>,boost::geometry::model::box<point>,boost::geometry::index::detail::rtree::node_d_mem_static_tag>,boost::geometry::index::detail::rtree::node_d_mem_static_tag>>
> 1> ]
> 1> d:\qzq\boost_1_55_0\boost\container\allocator_traits.hpp(262) : see reference to class template instantiation 'boost::container::container_detail::has_member_function_callable_with_select_on_container_copy_construction<const Alloc,>' being compiled
> 1> with
> 1> [
> 1> Alloc=std::allocator<boost::geometry::index::detail::rtree::dynamic_leaf<std::pair<box,unsigned int>,boost::geometry::index::quadratic<16,4>,boost::geometry::model::box<point>,boost::geometry::index::detail::rtree::allocators<std::allocator<value>,std::pair<box,unsigned int>,boost::geometry::index::quadratic<16,4>,boost::geometry::model::box<point>,boost::geometry::index::detail::rtree::node_d_mem_static_tag>,boost::geometry::index::detail::rtree::node_d_mem_static_tag>>
> 1> ]
> 1> d:\qzq\boost_1_55_0\boost\geometry\index\detail\rtree\node\node_d_mem_dynamic.hpp(257) : see reference to class template instantiation 'boost::container::allocator_traits<AllocNode>' being compiled
> 1> with
> 1> [
> 1> AllocNode=std::allocator<boost::geometry::index::detail::rtree::dynamic_leaf<std::pair<box,unsigned int>,boost::geometry::index::quadratic<16,4>,boost::geometry::model::box<point>,boost::geometry::index::detail::rtree::allocators<std::allocator<value>,std::pair<box,unsigned int>,boost::geometry::index::quadratic<16,4>,boost::geometry::model::box<point>,boost::geometry::index::detail::rtree::node_d_mem_static_tag>,boost::geometry::index::detail::rtree::node_d_mem_static_tag>>
> 1> ]
> 1> d:\qzq\boost_1_55_0\boost\geometry\index\detail\rtree\node\node_d_mem_dynamic.hpp(320) : see reference to function template instantiation 'BaseNodePtr boost::geometry::index::detail::rtree::create_dynamic_node<BaseNodePtr,boost::geometry::index::detail::rtree::dynamic_leaf<Value,Parameters,Box,Allocators,boost::geometry::index::detail::rtree::node_d_mem_static_tag>>::apply<std::allocator<_Other>>(AllocNode &)' being compiled
> 1> with
> 1> [
> 1> BaseNodePtr=boost::geometry::index::detail::rtree::dynamic_node<std::pair<box,unsigned int>,boost::geometry::index::quadratic<16,4>,boost::geometry::model::box<point>,boost::geometry::index::detail::rtree::allocators<std::allocator<value>,std::pair<box,unsigned int>,boost::geometry::index::quadratic<16,4>,boost::geometry::model::box<point>,boost::geometry::index::detail::rtree::node_d_mem_static_tag>,boost::geometry::index::detail::rtree::node_d_mem_static_tag> *
> 1> , Value=std::pair<box,unsigned int>
> 1> , Parameters=boost::geometry::index::quadratic<16,4>
> 1> , Box=boost::geometry::model::box<point>
> 1> , Allocators=boost::geometry::index::detail::rtree::allocators<std::allocator<value>,std::pair<box,unsigned int>,boost::geometry::index::quadratic<16,4>,boost::geometry::model::box<point>,boost::geometry::index::detail::rtree::node_d_mem_static_tag>
> 1> , _Other=boost::geometry::index::detail::rtree::dynamic_leaf<std::pair<box,unsigned int>,boost::geometry::index::quadratic<16,4>,boost::geometry::model::box<point>,boost::geometry::index::detail::rtree::allocators<std::allocator<value>,std::pair<box,unsigned int>,boost::geometry::index::quadratic<16,4>,boost::geometry::model::box<point>,boost::geometry::index::detail::rtree::node_d_mem_static_tag>,boost::geometry::index::detail::rtree::node_d_mem_static_tag>
> 1> , AllocNode=std::allocator<boost::geometry::index::detail::rtree::dynamic_leaf<std::pair<box,unsigned int>,boost::geometry::index::quadratic<16,4>,boost::geometry::model::box<point>,boost::geometry::index::detail::rtree::allocators<std::allocator<value>,std::pair<box,unsigned int>,boost::geometry::index::quadratic<16,4>,boost::geometry::model::box<point>,boost::geometry::index::detail::rtree::node_d_mem_static_tag>,boost::geometry::index::detail::rtree::node_d_mem_static_tag>>
> 1> ]
> 1> d:\qzq\boost_1_55_0\boost\geometry\index\detail\rtree\node\node_d_mem_dynamic.hpp(320) : see reference to function template instantiation 'BaseNodePtr boost::geometry::index::detail::rtree::create_dynamic_node<BaseNodePtr,boost::geometry::index::detail::rtree::dynamic_leaf<Value,Parameters,Box,Allocators,boost::geometry::index::detail::rtree::node_d_mem_static_tag>>::apply<std::allocator<_Other>>(AllocNode &)' being compiled
> 1> with
> 1> [
> 1> BaseNodePtr=boost::geometry::index::detail::rtree::dynamic_node<std::pair<box,unsigned int>,boost::geometry::index::quadratic<16,4>,boost::geometry::model::box<point>,boost::geometry::index::detail::rtree::allocators<std::allocator<value>,std::pair<box,unsigned int>,boost::geometry::index::quadratic<16,4>,boost::geometry::model::box<point>,boost::geometry::index::detail::rtree::node_d_mem_static_tag>,boost::geometry::index::detail::rtree::node_d_mem_static_tag> *
> 1> , Value=std::pair<box,unsigned int>
> 1> , Parameters=boost::geometry::index::quadratic<16,4>
> 1> , Box=boost::geometry::model::box<point>
> 1> , Allocators=boost::geometry::index::detail::rtree::allocators<std::allocator<value>,std::pair<box,unsigned int>,boost::geometry::index::quadratic<16,4>,boost::geometry::model::box<point>,boost::geometry::index::detail::rtree::node_d_mem_static_tag>
> 1> , _Other=boost::geometry::index::detail::rtree::dynamic_leaf<std::pair<box,unsigned int>,boost::geometry::index::quadratic<16,4>,boost::geometry::model::box<point>,boost::geometry::index::detail::rtree::allocators<std::allocator<value>,std::pair<box,unsigned int>,boost::geometry::index::quadratic<16,4>,boost::geometry::model::box<point>,boost::geometry::index::detail::rtree::node_d_mem_static_tag>,boost::geometry::index::detail::rtree::node_d_mem_static_tag>
> 1> , AllocNode=std::allocator<boost::geometry::index::detail::rtree::dynamic_leaf<std::pair<box,unsigned int>,boost::geometry::index::quadratic<16,4>,boost::geometry::model::box<point>,boost::geometry::index::detail::rtree::allocators<std::allocator<value>,std::pair<box,unsigned int>,boost::geometry::index::quadratic<16,4>,boost::geometry::model::box<point>,boost::geometry::index::detail::rtree::node_d_mem_static_tag>,boost::geometry::index::detail::rtree::node_d_mem_static_tag>>
> 1> ]
> 1> d:\qzq\boost_1_55_0\boost\geometry\index\detail\rtree\node\node_d_mem_dynamic.hpp(316) : while compiling class template member function 'boost::geometry::index::detail::rtree::dynamic_node<Value,Parameters,Box,Allocators,boost::geometry::index::detail::rtree::node_d_mem_static_tag> *boost::geometry::index::detail::rtree::create_node<Allocators,boost::geometry::index::detail::rtree::dynamic_leaf<Value,Parameters,Box,Allocators,boost::geometry::index::detail::rtree::node_d_mem_static_tag>>::apply(Allocators &)'
> 1> with
> 1> [
> 1> Value=std::pair<box,unsigned int>
> 1> , Parameters=boost::geometry::index::quadratic<16,4>
> 1> , Box=boost::geometry::model::box<point>
> 1> , Allocators=boost::geometry::index::detail::rtree::allocators<std::allocator<value>,std::pair<box,unsigned int>,boost::geometry::index::quadratic<16,4>,boost::geometry::model::box<point>,boost::geometry::index::detail::rtree::node_d_mem_static_tag>
> 1> ]
> 1> d:\qzq\boost_1_55_0\boost\geometry\index\rtree.hpp(1267) : see reference to function template instantiation 'boost::geometry::index::detail::rtree::dynamic_node<Value,Parameters,Box,Allocators,boost::geometry::index::detail::rtree::node_d_mem_static_tag> *boost::geometry::index::detail::rtree::create_node<Allocators,boost::geometry::index::detail::rtree::dynamic_leaf<Value,Parameters,Box,Allocators,boost::geometry::index::detail::rtree::node_d_mem_static_tag>>::apply(Allocators &)' being compiled
> 1> with
> 1> [
> 1> Value=std::pair<box,unsigned int>
> 1> , Parameters=boost::geometry::index::quadratic<16,4>
> 1> , Box=boost::geometry::model::box<point>
> 1> , Allocators=boost::geometry::index::detail::rtree::allocators<std::allocator<value>,std::pair<box,unsigned int>,boost::geometry::index::quadratic<16,4>,boost::geometry::model::box<point>,boost::geometry::index::detail::rtree::node_d_mem_static_tag>
> 1> ]
> 1> d:\qzq\boost_1_55_0\boost\geometry\index\rtree.hpp(1267) : see reference to class template instantiation 'boost::geometry::index::detail::rtree::create_node<boost::geometry::index::detail::rtree::allocators<std::allocator<Value>,Value,boost::geometry::index::quadratic<16,4>,boost::geometry::model::box<point>,boost::geometry::index::detail::rtree::node_d_mem_static_tag>,boost::geometry::index::detail::rtree::dynamic_leaf<Value,Parameters,Box,Allocators,boost::geometry::index::detail::rtree::node_d_mem_static_tag>>' being compiled
> 1> with
> 1> [
> 1> Value=value
> 1> , Parameters=boost::geometry::index::quadratic<16,4>
> 1> , Box=boost::geometry::model::box<point>
> 1> , Allocators=boost::geometry::index::detail::rtree::allocators<std::allocator<value>,std::pair<box,unsigned int>,boost::geometry::index::quadratic<16,4>,boost::geometry::model::box<point>,boost::geometry::index::detail::rtree::node_d_mem_static_tag>
> 1> ]
> 1> d:\qzq\boost_1_55_0\boost\geometry\index\rtree.hpp(1264) : while compiling class template member function 'void boost::geometry::index::rtree<value,boost::geometry::index::quadratic<16,4>,boost::geometry::index::indexable<Value>,boost::geometry::index::equal_to<Value>,std::allocator<Value>>::raw_create(void)'
> 1> with
> 1> [
> 1> Value=value
> 1> ]
> 1> d:\qzq\boost_1_55_0\boost\geometry\index\rtree.hpp(544) : see reference to function template instantiation 'void boost::geometry::index::rtree<value,boost::geometry::index::quadratic<16,4>,boost::geometry::index::indexable<Value>,boost::geometry::index::equal_to<Value>,std::allocator<Value>>::raw_create(void)' being compiled
> 1> with
> 1> [
> 1> Value=value
> 1> ]
> 1> c:\users\qiaozhiqiang\documents\visual studio 2013\projects\consoleapplication1\consoleapplication1\consoleapplication1.cpp(24) : see reference to class template instantiation 'boost::geometry::index::rtree<value,boost::geometry::index::quadratic<16,4>,boost::geometry::index::indexable<Value>,boost::geometry::index::equal_to<Value>,std::allocator<Value>>' being compiled
> 1> with
> 1> [
> 1> Value=value
> 1> ]
> ========== Rebuild All: 0 succeeded, 1 failed, 0 skipped ==========
>
> consoleapplication1.cpp, line 24 is:
> bgi::rtree< value, bgi::quadratic<16> > rtree;
>
>


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