
Hi, On Wed, Apr 9, 2008 at 4:02 PM, Paul A Bristow <pbristow@hetp.u-net.com> wrote:
-----Original Message----- From: boost-bounces@lists.boost.org [mailto:boost-bounces@lists.boost.org] On Behalf Of Stephan Diederich Sent: 08 April 2008 20:53 To: boost@lists.boost.org Subject: [boost] [1.35][lexical_cast][concept check][range] Build error andwarnings with MSVC8 on Warning Level 4
As we tried to update to 1.35 today, we found some warnings with MSVC on Warning Level 4 in:
lexical_cast: There was a return statement after a call to throw_exception which causes a unreachable code warning. I can see no problem by just removing that return. see http://svn.boost.org/trac/boost/ticket/1791
The problem code is:
throw_exception(bad_lexical_cast(typeid(Source), typeid(Target))); return Target(); // normally never reached (throw_exception)
Is the problem that the compiler can't be confident that throw_exception won't ever return? (For that matter, can we?)
Hm, I'm not sure what you mean. Do you think we exchange one warning with another? "Code not reachable" with "Missing return value"?. I think _we_ can be sure throw_exception does not return. throw_exception doc ( http://tinyurl.com/4vup33 ) says that even the user defined one is not allowed to return.
So would it be better to *suppress the warning* ?
I'm fine with that. Thanks for looking into this! cheers, stephan
with a push'n'pop around this:
#if (defined _MSC_VER) # pragma warning( push ) # pragma warning( disable : 4702 ) : unreachable code #endif
throw_exception(bad_lexical_cast(typeid(Source), typeid(Target))); return Target(); // normally never reached (throw_exception)
#if (defined _MSC_VER) # pragma warning( pop ) #endif
Paul
--- Paul A Bristow Prizet Farmhouse, Kendal, Cumbria UK LA8 8AB +44 1539561830 & SMS, Mobile +44 7714 330204 & SMS pbristow@hetp.u-net.com
_______________________________________________ Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost