[optional.iterators] (original) (raw)

22 General utilities library [utilities]

22.5 Optional objects [optional]

22.5.3 Class template optional [optional.optional]

22.5.3.6 Iterator support [optional.iterators]

using iterator = _implementation-defined_;using const_iterator = _implementation-defined_;

The reference type is T& for iterator andconst T& for const_iterator.

All requirements on container iterators ([container.reqmts]) apply tooptional​::​iterator and optional​::​const_iterator as well.

Any operation that initializes or destroys the contained value of an optional object invalidates all iterators into that object.

constexpr iterator begin() noexcept;constexpr const_iterator begin() const noexcept;

Returns: If has_value() is true, an iterator referring to the contained value.

Otherwise, a past-the-end iterator value.

constexpr iterator end() noexcept;constexpr const_iterator end() const noexcept;

Returns: begin() + has_value().