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

### 3608. `convertible_to` and temporary-bound references

Section: 18.4.4 [concept.convertible] Status: New Submitter: Tim Song Opened: 2021-09-28 Last modified: 2021-10-23

Priority: 3

View other active issues in [concept.convertible].

View all other issues in [concept.convertible].

View all issues with New status.

Discussion:

The semantic requirements of `convertible_to` express implicit conversion by means of a function:

>     To test(FromR (&f)()) {
>       return f();
>     }

and it requires that `static_cast<To>(f())` be equal to `test(f)` for some equality-preserving function `f`. However, when `To` is a reference type but `FromR` is such that the conversion binds the reference to a temporary, the `static_cast` is valid but `test(f)` would produce a dangling reference.

We should rephrase this requirement to just perform the implicit conversion in words. Using a function handles the convert-`void`-to-`void` case, but the semantic requirements wording already excluded that case anyway.

[2021-10-14; Reflector poll]

Set priority to 3 after reflector poll.

Proposed resolution: