| #pragma once | |
| /** | |
| * Optional implementation. | |
| * | |
| * Copyright: Copyright (C) 1999-2022 by The D Language Foundation, All Rights Reserved | |
| * Authors: $(LINK2 https://www.digitalmars.com, Walter Bright) | |
| * License: $(LINK2 https://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) | |
| * Source: $(LINK2 https://github.com/dlang/dmd/blob/master/src/dmd/root/optional.h, root/_optional.h) | |
| * Documentation: https://dlang.org/phobos/dmd_root_optional.html | |
| * Coverage: https://codecov.io/gh/dlang/dmd/src/master/src/dmd/root/optional.h | |
| */ | |
| /// Optional type that is either `empty` or contains a value of type `T` | |
| template<typename T> | |
| struct Optional final | |
| { | |
| private: | |
| /** the value (if present) **/ | |
| T value; | |
| /** whether `value` is set **/ | |
| bool present; | |
| public: | |
| /** Creates an `Optional` with the given value **/ | |
| Optional(T); | |
| /** Creates an `Optional` with the given value **/ | |
| static Optional<T> create(T); | |
| /** Checks whether this `Optional` contains a value **/ | |
| bool isPresent() const; | |
| /** Checks whether this `Optional` does not contain a value **/ | |
| bool isEmpty() const; | |
| /** Returns: The value if present **/ | |
| T get(); | |
| bool hasValue(const T) const; | |
| }; |