Modify

Ticket #6812 (closed Bugs: fixed)

Opened 2 years ago

Last modified 2 years ago

boost::lexical_cast<float>(".") returns 0 instead of throwing

Reported by: Bruce Merry <bmerry@…> Owned by: apolukhin
Milestone: Boost 1.50.0 Component: lexical_cast
Version: Boost 1.48.0 Severity: Regression
Keywords: Cc:

Description

The attached program reports

boost::lexical_cast<float>(".") returns 0

when it should report an exception. According to the lexical_cast docs, lexical_cast<float>(string) is supposed to be equivalent to

  • using stream extraction, which in turn is defined in terms of
  • num_get on the numeric facet, which is defined in terms of
  • strtold in the C standard, which requires
  • "a non-empty sequence of decimal digits, optionally containing a decimal-point character"

strtold also refers to the grammar for a floating-point literal, which is pretty clear that either the part before or the part after the decimal point has to be non-empty. Compiler is MSVC 2010 SP1. I haven't messed around with locales at all so it's whatever the default is for an English install of Windows 7.

This works with Boost 1.46 under GCC 4.6 - I'm guessing because 1.46 left parsing of float strings to operator>>.

Attachments

lc.cpp Download (410 bytes) - added by Bruce Merry <bmerry@…> 2 years ago.
lc.2.cpp Download (410 bytes) - added by Bruce Merry <bmerry@…> 2 years ago.

Change History

Changed 2 years ago by Bruce Merry <bmerry@…>

Changed 2 years ago by Bruce Merry <bmerry@…>

comment:1 Changed 2 years ago by Bruce Merry <bmerry@…>

Ack, the attachment went through twice. lc.cpp and lc.2.cpp are the same file.

comment:2 Changed 2 years ago by apolukhin

  • Status changed from new to assigned
  • Milestone changed from To Be Determined to Boost 1.50.0

comment:3 Changed 2 years ago by apolukhin

  • Status changed from assigned to closed
  • Resolution set to fixed

(In [78111]) Fixes #6812 (now converting "." to float type throws bad_lexical_cast)

comment:4 Changed 2 years ago by apolukhin

(In [78211]) Merge from trunk:

  • fixed #6812 (now converting "." to float type throws bad_lexical_cast)
View

Add a comment

Modify Ticket

Change Properties
<Author field>
Action
as closed
The resolution will be deleted. Next status will be 'reopened'
Author


E-mail address and user name can be saved in the Preferences.

 
Note: See TracTickets for help on using tickets.