optional.hpp

Audited implementation of std::optional. Status: RELEASE.

This file is part of Empirical, https://github.com/devosoft/Empirical Copyright (C) 2020 Michigan State University MIT Software license; see doc/LICENSE.md

Drop-in replacements for std::optional. In debug mode, operator * and operator-> value accesses are checked for undefined behavior.

Defines

INCLUDE_EMP_BASE_OPTIONAL_HPP_GUARD

Functions

template<class T>
constexpr optional<std::decay_t<T>> make_optional(T &&value)
template<class T, class ...Args>
constexpr optional<T> make_optional(Args&&... args)
template<class T, class Elem, class ...Args>
constexpr optional<T> make_optional(std::initializer_list<Elem> il, Args&&... args)
template<class T>
class optional : public std::optional<T>
#include <optional.hpp>

Public Functions

inline constexpr const T *operator->() const
inline constexpr T *operator->()
inline constexpr const T &operator*() const &
inline constexpr T &operator*() &
inline constexpr T &&operator*() &&
inline constexpr const T &&operator*() const &&

Private Types

using parent_t = std::optional<T>