3022. is_convertible<derived*, base*> may lead to ODR

Section: 21.3.7 [meta.rel] Status: Resolved Submitter: Alisdair Meredith Opened: 2017-09-24 Last modified: 2018-11-12 04:30:58 UTC

Priority: 2

View other active issues in [meta.rel].

View all other issues in [meta.rel].

View all issues with Resolved status.


Given two incomplete types, base and derived, that will have the expected base/derived relationship when complete, the trait is_convertible claims to support instantiation with pointers to these types (as pointers to incomplete types are, themselves, complete), yet will give a different answer when the types are complete vs. when they are incomplete.

We should require pointers (and pointers to pointers etc.) point to a complete type, unless one is a pointer to cv-void. We may also want some weasel-wording to permit pointers to arrays-of-unknown-bound, and pointers to cv-qualified variants of the same incomplete type.

[2017-11 Albuquerque Wednesday night issues processing]

Priority set to 2

[2018-08 Batavia Monday issue discussion]

Issues 2797, 2939, 3022, and 3099 are all closely related. Walter to write a paper resolving them.

[2018-11-11 Resolved by P1285R0, adopted in San Diego.]

Proposed resolution: