3016. optional and over-aligned types

Section: 23.6.3 [optional.optional] Status: New Submitter: Tim Song Opened: 2017-09-04 Last modified: 2017-11-09

Priority: 3

View other active issues in [optional.optional].

View all other issues in [optional.optional].

View all issues with New status.

Discussion:

LWG issue 2555 added "It is implementation-defined whether over-aligned types are supported (C++14 §3.11)." to the specification of std::experimental::optional in LFTS, however that issue wasn't moved until optional had already been merged to the IS working paper, so it isn't present in the specification of std::optional. Should the same rule be added for std::optional as well?

[2017-11 Albuquerque Wednesday night issues processing]

Priority set to 3; Casey to provide rationale for closing as NAD.

Proposed resolution:

This wording is relative to N4687.

  1. Edit 23.6.3 [optional.optional] p1 as indicated:

    […] The contained value shall be allocated in a region of the optional<T> storage suitably aligned for the type T. It is implementation-defined whether over-aligned types are supported (6.6.5 [basic.align]). When an object of type optional<T> is contextually converted to bool, the conversion returns true if the object contains a value; otherwise the conversion returns false.