Re: [Boost-bugs] [Boost C++ Libraries] #3067: [regex] regression test failures on VC10 beta 1

Subject: Re: [Boost-bugs] [Boost C++ Libraries] #3067: [regex] regression test failures on VC10 beta 1
From: Boost C++ Libraries (noreply_at_[hidden])
Date: 2009-05-23 13:57:25


#3067: [regex] regression test failures on VC10 beta 1
----------------------------------------------------------+-----------------
  Reporter: Richard Webb <richard.webb_at_[hidden]> | Owner: johnmaddock
      Type: Bugs | Status: new
 Milestone: Boost 1.40.0 | Component: regex
   Version: Boost Development Trunk | Severity: Problem
Resolution: | Keywords:
----------------------------------------------------------+-----------------

Comment(by Richard Webb <richard.webb_at_[hidden]>):

 I've done a few more tests with this, and found the following:

 Your patch fixes the initial errors, but the compile still fails with a
 number of other errors (see the attached logs for full details).

 The first errors are :

 {{{
 wc_regex_traits.cpp(48) : error C2910: 'std::char_traits<unsigned
 short>::length' : cannot be explicitly specialized

 usinstances.cpp(47) : error C2910: 'std::char_traits<unsigned
 short>::length' : cannot be explicitly specialized
 }}}

 Removing those workarounds allows the code to compile, but results in
 linker errors. e.g.:

 {{{
 w32_regex_traits.obj : error LNK2019: unresolved external symbol
 "__declspec(dllimport) public: __thiscall std::basic_string<unsigned
 short,struct std::char_traits<unsigned short>,class
 std::allocator<unsigned short> >::basic_string<unsigned short,struct
 std::char_traits<unsigned short>,class std::allocator<unsigned short>
>(unsigned short const *)"
 (__imp_??0?$basic_string_at_GU?$char_traits_at_G@std@@V?$allocator_at_G@2@@std@@QAE_at_PBG@Z)
 referenced in function "class std::basic_string<unsigned short,struct
 std::char_traits<unsigned short>,class std::allocator<unsigned short> >
 __cdecl boost::re_detail::w32_cat_get(class boost::shared_ptr<void> const
 &,unsigned long,int,class std::basic_string<unsigned short,struct
 std::char_traits<unsigned short>,class std::allocator<unsigned short> >
 const &)"
 (?w32_cat_get_at_re_detail_at_boost@@YA?AV?$basic_string_at_GU?$char_traits_at_G@std@@V?$allocator_at_G@2@@std@@ABV?$shared_ptr_at_X@2_at_KHABV34@@Z)
 }}}


 Looking at the VC10 headers, i see that they contain definitions for
 std::u16string (where u16string is basic_string<char16_t> and char16_t is
 an unsigned short), so i'm thinking that theres a clash between the
 definitions.

 Indeed, removing all the workarounds from the 2 cpp files mentioned above
 along with the 'extern template...' on line 169 of regex/config.hpp seems
 to fix the failures.

-- 
Ticket URL: <https://svn.boost.org/trac/boost/ticket/3067#comment:4>
Boost C++ Libraries <http://www.boost.org/>
Boost provides free peer-reviewed portable C++ source libraries.

This archive was generated by hypermail 2.1.7 : 2017-02-16 18:50:00 UTC