/
usr
/
local
/
include
/
mapbox
/
/usr/local/include/mapbox
mkdir
upload
Name
Size
Mode
Actions
optional.hpp
1575
0644
edit
dl
rm
recursive_wrapper.hpp
2632
0644
edit
dl
rm
variant.hpp
31575
0644
edit
dl
rm
variant_io.hpp
912
0644
edit
dl
rm
variant_visitor.hpp
743
0644
edit
dl
rm
Edit:
/usr/local/include/mapbox/optional.hpp
(1575B)
#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
Save
cmd:
run