summaryrefslogtreecommitdiffstats
path: root/include/mapbox/optional.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'include/mapbox/optional.hpp')
-rw-r--r--include/mapbox/optional.hpp74
1 files changed, 0 insertions, 74 deletions
diff --git a/include/mapbox/optional.hpp b/include/mapbox/optional.hpp
deleted file mode 100644
index d84705c..0000000
--- a/include/mapbox/optional.hpp
+++ /dev/null
@@ -1,74 +0,0 @@
-#ifndef MAPBOX_UTIL_OPTIONAL_HPP
-#define MAPBOX_UTIL_OPTIONAL_HPP
-
-#pragma message("This implementation of optional is deprecated. See https://github.com/mapbox/variant/issues/64.")
-
-#include <type_traits>
-#include <utility>
-
-#include <mapbox/variant.hpp>
-
-namespace mapbox {
-namespace util {
-
-template <typename T>
-class optional
-{
- static_assert(!std::is_reference<T>::value, "optional doesn't support references");
-
- struct none_type
- {
- };
-
- variant<none_type, T> variant_;
-
-public:
- optional() = default;
-
- optional(optional const& rhs)
- {
- if (this != &rhs)
- { // protect against invalid self-assignment
- variant_ = rhs.variant_;
- }
- }
-
- optional(T const& v) { variant_ = v; }
-
- explicit operator bool() const noexcept { return variant_.template is<T>(); }
-
- T const& get() const { return variant_.template get<T>(); }
- T& get() { return variant_.template get<T>(); }
-
- T const& operator*() const { return this->get(); }
- T operator*() { return this->get(); }
-
- optional& operator=(T const& v)
- {
- variant_ = v;
- return *this;
- }
-
- optional& operator=(optional const& rhs)
- {
- if (this != &rhs)
- {
- variant_ = rhs.variant_;
- }
- return *this;
- }
-
- template <typename... Args>
- void emplace(Args&&... args)
- {
- variant_ = T{std::forward<Args>(args)...};
- }
-
- void reset() { variant_ = none_type{}; }
-
-}; // class optional
-
-} // namespace util
-} // namespace mapbox
-
-#endif // MAPBOX_UTIL_OPTIONAL_HPP