0

最初の行は正常にコンパイルされます。2番目も実行中のEXEを生成しますが、さらに次の大きなエラーが発生します:

In file included from d:\boost/boost/regex/v4/regex_traits.hpp:35:0,
                 from d:\boost/boost/regex/regex_traits.hpp:27,
                 from d:\boost/boost/regex/v4/regex.hpp:39,
                 from d:\boost/boost/regex.hpp:31,
                 from test.cpp:4:
d:\boost/boost/regex/v4/regex_traits_defaults.hpp: In instantiation of 'const charT* boost::re_detail::get_escape_R_string() [with charT = wchar_t]':
d:\boost/boost/regex/v4/basic_regex_parser.hpp:804:54:   required from 'bool boost::re_detail::basic_regex_parser<charT, traits>::parse_extended_escape() [with charT = wchar_t; traits = boost::regex_traits<wchar_t>]'
d:\boost/boost/regex/v4/basic_regex_parser.hpp:308:36:   required from 'bool boost::re_detail::basic_regex_parser<charT, traits>::parse_extended() [with charT = wchar_t; traits = boost::regex_traits<wchar_t>]'
d:\boost/boost/regex/v4/basic_regex_parser.hpp:134:10:   required from 'void boost::re_detail::basic_regex_parser<charT, traits>::parse(const charT*, const charT*, unsigned int) [with charT = wchar_t; traits = boost::regex_traits<wchar_t>]'
d:\boost/boost/regex/v4/basic_regex.hpp:215:7:   required from 'void boost::re_detail::basic_regex_implementation<charT, traits>::assign(const charT*, const charT*, boost::re_detail::basic_regex_implementation<charT, traits>::flag_type) [with charT = wchar_t; traits = boost::regex_traits<wchar_t>; boost::re_detail::basic_regex_implementation<charT, traits>::flag_type = unsigned int]'
d:\boost/boost/regex/v4/basic_regex.hpp:661:4:   required from 'boost::basic_regex<charT, traits>& boost::basic_regex<charT, traits>::do_assign(const charT*, const charT*, boost::basic_regex<charT, traits>::flag_type) [with charT = wchar_t; traits = boost::regex_traits<wchar_t>; boost::basic_regex<charT, traits>::flag_type = unsigned int]'
d:\boost/boost/regex/v4/basic_regex.hpp:382:33:   required from 'boost::basic_regex<charT, traits>& boost::basic_regex<charT, traits>::assign(const charT*, const charT*, boost::basic_regex<charT, traits>::flag_type) [with charT = wchar_t; traits = boost::regex_traits<wchar_t>; boost::basic_regex<charT, traits> = boost::basic_regex<wchar_t, boost::regex_traits<wchar_t> >; boost::basic_regex<charT, traits>::flag_type = unsigned int]'
d:\boost/boost/regex/v4/basic_regex.hpp:367:48:   required from 'boost::basic_regex<charT, traits>& boost::basic_regex<charT, traits>::assign(const charT*, boost::basic_regex<charT, traits>::flag_type) [with charT = wchar_t; traits = boost::regex_traits<wchar_t>; boost::basic_regex<charT, traits> = boost::basic_regex<wchar_t, boost::regex_traits<wchar_t> >; boost::basic_regex<charT, traits>::flag_type = unsigned int]'
d:\boost/boost/regex/v4/basic_regex.hpp:336:7:   required from 'boost::basic_regex<charT, traits>::basic_regex(const charT*, boost::basic_regex<charT, traits>::flag_type) [with charT = wchar_t; traits = boost::regex_traits<wchar_t>; boost::basic_regex<charT, traits>::flag_type = unsigned int]'
test.cpp:15:37:   required from here
d:\boost/boost/regex/v4/regex_traits_defaults.hpp:329:73: warning: narrowing conversion of ''\37777777605'' from 'char' to 'const wchar_t' inside { } [-Wnarrowing]
d:\boost/boost/regex/v4/regex_traits_defaults.hpp:331:64: warning: narrowing conversion of ''\37777777605'' from 'char' to 'const wchar_t' inside { } [-Wnarrowing]

コード:

#include <iostream>
#include <boost/regex.hpp>

int main() {
  boost::regex narrow_str_regex("a+");
  boost::wregex wide_str_regex(L"a+");
}

ブースト: http://sourceforge.net/projects/boost/files/boost/1.52.0/boost_1_52_0.7z

コンパイラ: http://sourceforge.net/projects/mingwbuilds/files/host-windows/releases/4.7.2/32-bit/threads-posix/sjlj/x32-4.7.2-release-posix-sjlj-rev7. 7z

4

1 に答える 1

2

これは、特に以下に影響する既知のバグです。

  • ブースト 1.51 / 1.52
  • gcc 4.7.2
  • C++11 を有効にする

32 ビット コンパイラを使用する場合、コンパイラに含まれるライブラリのバグのようです。

于 2013-01-26T20:12:51.960 に答える