Title
[dec.tr] allow narrowing conversions
Status
nad
Section
[trdec.types.types]
Submitter
Martin Sebor

Created on 2006-06-15.00:00:00 last changed 164 months ago

Messages

Date: 2010-10-21.18:28:33

[ Redmond: We prefer explicit conversions for narrowing and implicit for widening. ]

Date: 2010-10-21.18:28:33

Proposed resolution:

1. In "3.2.2 Class decimal32" synopsis, remove the explicit specifier from the narrowing conversions:

                // 3.2.2.2 conversion from floating-point type:
                explicit decimal32(decimal64 d64);
                explicit decimal32(decimal128 d128);

2. Do the same thing in "3.2.2.2. Conversion from floating-point type."

3. In "3.2.3 Class decimal64" synopsis, remove the explicit specifier from the narrowing conversion:

                // 3.2.3.2 conversion from floating-point type:
                explicit decimal64(decimal128 d128);

4. Do the same thing in "3.2.3.2. Conversion from floating-point type."

Date: 2010-10-21.18:28:33

[ 2009-07 Frankfurt ]

The current state of the Decimal TR is the result of a deliberate design decision that has been examined many times.

Move to NAD.

Date: 2006-06-15.00:00:00

In c++std-lib-17205, Martin writes:

...was it a deliberate design choice to make narrowing assignments ill-formed while permitting narrowing compound assignments? For instance:

      decimal32 d32;
      decimal64 d64;

      d32 = 64;     // error
      d32 += 64;    // okay

In c++std-lib-17229, Robert responds:

It is a vestige of an old idea that I forgot to remove from the paper. Narrowing assignments should be permitted. The bug is that the converting constructors that cause narrowing should not be explicit. Thanks for pointing this out.

History
Date User Action Args
2010-10-21 18:28:33adminsetmessages: + msg3200
2010-10-21 18:28:33adminsetmessages: + msg3199
2010-10-21 18:28:33adminsetmessages: + msg3198
2006-06-15 00:00:00admincreate