554. Problem with lwg DR 184 numeric_limits<bool>

Section: 21.3.4.2 [numeric.special] Status: NAD Submitter: Howard Hinnant Opened: 2006-01-29 Last modified: 2016-02-10

Priority: Not Prioritized

View all other issues in [numeric.special].

View all issues with NAD status.

Discussion:

I believe we have a bug in the resolution of: 184 (WP status).

The resolution spells out each member of numeric_limits<bool>. The part I'm having a little trouble with is:

static const bool traps = false;

Should this not be implementation defined? Given:

int main()
{
     bool b1 = true;
     bool b2 = false;
     bool b3 = b1/b2;
}

If this causes a trap, shouldn't numeric_limits<bool>::traps be true?

Proposed resolution:

Change 18.2.1.5p3:

-3- The specialization for bool shall be provided as follows:

namespace std { 
   template <> class numeric_limits<bool> {
      ...
      static const bool traps = false implementation-defined;
      ...
   };
}

[ Redmond: NAD because traps refers to values, not operations. There is no bool value that will trap. ]