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: