Boost logo

Boost :

Subject: Re: [boost] unordered_map failing to compile on MSVC7.1 using STLport
From: Robert Dailey (rcdailey_at_[hidden])
Date: 2012-02-13 12:11:05


I would really appreciate some insight here, I have no idea what is going
on. This is actually preventing company code from compiling, so it's
extremely important. If I can't get help here the only thing I can do is
just not use boost.

The "call stack" chain for template instantiation provided in my pasted
error is confusing. It shows the source of where I create the
unordered_map, which is in gdgalquery.h(40), but after that it says that
_locale.h is next? How is _locale.h next? That tells me that STL is
instantiating my class? Anyone know what is going on?

---------
Robert Dailey

On Fri, Feb 10, 2012 at 1:13 PM, Robert Dailey <rcdailey_at_[hidden]> wrote:

> On Fri, Feb 10, 2012 at 1:05 PM, Robert Dailey <rcdailey_at_[hidden]> wrote:
>
>> For some reason, I get the following compiler error on Visual Studio .NET
>> 2003 when using STLport 5.2.1:
>>
>> boost\unordered\detail\allocator_helpers.hpp(318) : error C2039:
>> 'select_on_container_copy_construction' : is not a member of
>> 'stlpd_std::allocator<_Tp>'
>>
>> Any idea why this is happening? If not, what other information can I
>> provide?
>>
>
> Here is the full error:
>
> C:\Code\work\cmake-gfe-dev\build-vc7\third_party\boost\1.48.0\include\boost\unordered\detail\allocator_helpers.hpp(318)
> : error C2039: 'select_on_container_copy_construction' : is not a member of
> 'stlpd_std::allocator<_Tp>'
> with
> [
>
> _Tp=boost::unordered::detail::ptr_node<boost::unordered::detail::map<boost::unordered::unordered_map<int,int>::value_allocator,int,boost::hash<int>,stlpd_std::equal_to<int>>::value_type>
> ]
>
> C:\Code\work\cmake-gfe-dev\build-vc7\third_party\boost\1.48.0\include\boost\unordered\detail\allocator_helpers.hpp(436)
> : see reference to function template instantiation
> 'boost::enable_if_c<B,T>::type
> boost::unordered::detail::call_select_on_container_copy_construction<Alloc>(const
> Alloc &)' being compiled
> with
> [
> B=true,
>
> T=boost::unordered::detail::rebind_wrap<boost::unordered::unordered_map<int,int>::value_allocator,boost::unordered::detail::ptr_node<boost::unordered::detail::map<boost::unordered::unordered_map<int,int>::value_allocator,int,boost::hash<int>,stlpd_std::equal_to<int>>::value_type>>::type,
>
> Alloc=boost::unordered::detail::rebind_wrap<boost::unordered::unordered_map<int,int>::value_allocator,boost::unordered::detail::ptr_node<boost::unordered::detail::map<boost::unordered::unordered_map<int,int>::value_allocator,int,boost::hash<int>,stlpd_std::equal_to<int>>::value_type>>::type
> ]
>
> C:\Code\work\cmake-gfe-dev\build-vc7\third_party\boost\1.48.0\include\boost\unordered\detail\allocator_helpers.hpp(434)
> : while compiling class-template member function
> 'boost::unordered::detail::rebind_wrap<Alloc,T>::type
> boost::unordered::detail::allocator_traits<boost::unordered::detail::rebind_wrap<Alloc,T>::type>::select_on_container_copy_construction(const
> stlpd_std::allocator<_Tp> &)'
> with
> [
>
> Alloc=boost::unordered::unordered_map<int,int>::value_allocator,
>
> T=boost::unordered::detail::ptr_node<boost::unordered::detail::map<boost::unordered::unordered_map<int
>
> ,int>::value_allocator,int,boost::hash<int>,stlpd_std::equal_to<int>>::value_type>,
>
> _Tp=boost::unordered::detail::ptr_node<boost::unordered::detail::map<boost::unordered::unordered_map<int,int>::value_allocator,int,boost::hash<int>,stlpd_std::equal_to<int>>::value_type>
> ]
>
> C:\Code\work\cmake-gfe-dev\build-vc7\third_party\boost\1.48.0\include\boost\unordered\detail\unique.hpp(106)
> : see reference to class template instantiation
> 'boost::unordered::detail::allocator_traits<Alloc>' being compiled
> with
> [
>
> Alloc=boost::unordered::detail::rebind_wrap<boost::unordered::unordered_map<int,int>::value_allocator,boost::unordered::detail::ptr_node<boost::unordered::detail::map<boost::unordered::unordered_map<int,int>::value_allocator,int,boost::hash<int>,stlpd_std::equal_to<int>>::value_type>>::type
> ]
>
> C:\Code\work\cmake-gfe-dev\build-vc7\third_party\boost\1.48.0\include\boost\unordered\detail\unique.hpp(150)
> : see reference to class template instantiation
> 'boost::unordered::detail::pick_node<A,T>' being compiled
> with
> [
> A=boost::unordered::unordered_map<int,int>::value_allocator,
>
> T=boost::unordered::detail::map<boost::unordered::unordered_map<int,int>::value_allocator,int,boost::hash<int>,stlpd_std::equal_to<int>>::value_type
> ]
>
> C:\Code\work\cmake-gfe-dev\build-vc7\third_party\boost\1.48.0\include\boost\unordered\unordered_map.hpp(66)
> : see reference to class template instantiation
> 'boost::unordered::detail::map<A,K,H,P>' being compiled
> with
> [
> A=boost::unordered::unordered_map<int,int>::value_allocator,
> K=int,
> H=boost::hash<int>,
> P=stlpd_std::equal_to<int>
> ]
> c:\Code\work\cmake-gfe-dev\server\common\gmsdblib\gdgalquery.h(40)
> : see reference to class template instantiation
> 'boost::unordered::unordered_map<K,T>' being compiled
> with
> [
> K=int,
> T=int
> ]
> C:\Code\work\cmake-gfe-de
> v\build-vc7\third_party\stlport\5.2.1\include\stlport\stl\_locale.h(349) :
> see reference to class template instantiation
> 'stlpd_std::money_put<_CharT,_OutputIter>' being compiled
> with
> [
> _CharT=char,
>
> _OutputIter=stlpd_std::ostreambuf_iterator<char,stlpd_std::char_traits<char>>
> ]
>
> C:\Code\work\cmake-gfe-dev\build-vc7\third_party\stlport\5.2.1\include\stlport\stl\_locale.h(349)
> : see reference to class template instantiation
> 'stlpd_std::time_get<_Ch,_InIt>' being compiled
> with
> [
> _Ch=char,
>
> _InIt=stlpd_std::istreambuf_iterator<char,stlpd_std::char_traits<char>>
> ]
>
> C:\Code\work\cmake-gfe-dev\build-vc7\third_party\stlport\5.2.1\include\stlport\stl\_locale.h(349)
> : see reference to class template instantiation
> 'stlpd_std::time_put<_Ch,_OutIt>' being compiled
> with
> [
> _Ch=char,
>
> _OutIt=stlpd_std::ostreambuf_iterator<char,stlpd_std::char_traits<char>>
> ]
>
> C:\Code\work\cmake-gfe-dev\build-vc7\third_party\stlport\5.2.1\include\stlport\stl\_locale.h(349)
> : see reference to class template instantiation
> 'stlpd_std::money_get<_CharT,_InputIter>' being compiled
> with
> [
> _CharT=wchar_t,
>
> _InputIter=stlpd_std::istreambuf_iterator<wchar_t,stlpd_std::char_traits<wchar_t>>
> ]
>
> C:\Code\work\cmake-gfe-dev\build-vc7\third_party\stlport\5.2.1\include\stlport\stl\_locale.h(349)
> : see reference to class template instantiation
> 'stlpd_std::money_put<_CharT,_OutputIter>' being compiled
> with
> [
> _CharT=wchar_t,
>
> _OutputIter=stlpd_std::ostreambuf_iterator<wchar_t,stlpd_std::char_traits<wchar_t>>
> ]
>
> C:\Code\work\cmake-gfe-dev\build-vc7\third_party\stlport\5.2.1\include\stlport\stl\_locale.h(349)
> : see reference to class template instantiation
> 'stlpd_std::time_get<_Ch,_InIt>' being compiled
> with
> [
> _Ch=wchar_t,
> _InIt=stlpd_std::istreambuf_iterator<wc
> har_t,stlpd_std::char_traits<wchar_t>>
> ]
>
> C:\Code\work\cmake-gfe-dev\build-vc7\third_party\stlport\5.2.1\include\stlport\stl\_locale.h(349)
> : see reference to class template instantiation
> 'stlpd_std::time_put<_Ch,_OutIt>' being compiled
> with
> [
> _Ch=wchar_t,
>
> _OutIt=stlpd_std::ostreambuf_iterator<wchar_t,stlpd_std::char_traits<wchar_t>>
> ]
>
> C:\Code\work\cmake-gfe-dev\build-vc7\third_party\stlport\5.2.1\include\stlport\stl\_locale.h(294)
> : see reference to function template instantiation '_Facet
> *stlpd_std::priv::_UseFacet<_Facet>(const stlpd_std::locale &,const _Facet
> *)' being compiled
> with
> [
> _Facet=stlpd_std::ctype<wchar_t>
> ]
>
> C:\Code\work\cmake-gfe-dev\build-vc7\third_party\stlport\5.2.1\include\stlport\stl\_num_put.c(135)
> : see reference to function template instantiation 'const _Facet
> &stlpd_std::use_facet<stlpd_std::ctype<wchar_t>>(const stlpd_std::locale
> &)' being compiled
> with
> [
> _Facet=stlpd_std::ctype<wchar_t>
> ]
>


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