Boost logo

Boost Users :

Subject: [Boost-users] narrowing conversion warning in boost's regex_traits_defaults.hpp when trying to initialize wregex object
From: rsk82 (rsk82_at_[hidden])
Date: 2013-01-27 18:24:10


The first line compiles ok. The second also produces working EXE, but in
addition I get this large error:

    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&lt;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&lt;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]

code :

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

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

boost:
http://sourceforge.net/projects/boost/files/boost/1.52.0/boost_1_52_0.7z

compiler:
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

( and I know that this is the bug:
https://svn.boost.org/trac/boost/ticket/7263 )

so, any tricks to get around this (some compiler switches?, I dunno) ? Or
can I just ignore this error ? (Yes I need regex matching on wide strings.)

--
View this message in context: http://boost.2283326.n4.nabble.com/narrowing-conversion-warning-in-boost-s-regex-traits-defaults-hpp-when-trying-to-initialize-wregex-ot-tp4641859.html
Sent from the Boost - Users mailing list archive at Nabble.com.

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