This page is a snapshot from the LWG issues list, see the Library Active Issues List for more information and the meaning of Resolved status.

### 2693. `constexpr` for various `std::complex` arithmetic and value operators

Section: 26.4 [complex.numbers] Status: Resolved Submitter: Oliver Rosten Opened: 2016-04-14 Last modified: 2018-06-12

Priority: 3

View all other issues in [complex.numbers].

View all issues with Resolved status.

Discussion:

This modification will allow complex-number arithmetic to be performed at compile time. From a mathematical standpoint, it is natural (and desirable) to treat complex numbers on the same footing as the reals. From a programming perspective, this change will broaden the scope in which `std::complex` can be used, allowing it to be smoothly incorporated into classes exploiting `constexpr`.

Suggested resolution:

The following functions in the `std::complex` namespace should be made `constexpr`:

1. Section 26.4.6 [complex.member.ops]: The member (arithmetic) operators {`+=`, `-=`, `/=`, `*=`}

2. Section 26.4.7 [complex.ops]: The arithmetic operators unary operators {`+`, `-`} and binary operators {`+`, `-`, `/`, `*`};

3. Section 26.4.8 [complex.value.ops]: The 'value' operators `abs`, `norm`, and `conj`.

In terms of modification of the standard, all that is required is the insertion of the `constexpr` specifier in the relevant parts of:

1. Section 26.4.2 [complex.syn] (the Header synopsis), together with the corresponding entries in sections 26.4.7 [complex.ops] and 26.4.8 [complex.value.ops].

2. Sections 26.4.3 [complex], 26.4.4 [complex.special] (class template and specializations), together with the corresponding entries in section 26.4.6 [complex.member.ops].

[2016-05 Issues Telecon]

This kind of work (new feature) has been being done via papers rather than via the issues list.

Walter believes that he knows someone who would be willing to write such a paper.

[2018-06 Rapperswil Wednesday issues processing]

This was resolved by P0415, which was adopted in Albequerque.

Proposed resolution: