 |
PRCYCoin
2.0.0.7rc1
P2P Digital Currency
|
Go to the documentation of this file.
3 #ifndef __ZXCVBN__OPTIONAL_HPP
4 #define __ZXCVBN__OPTIONAL_HPP
32 static_assert(!std::is_reference<T>::value,
"cannot use optional with a reference type!");
40 template<
class Optional>
43 new (
this)
optional(*std::forward<Optional>(o));
53 new (
this)
optional(std::forward<T2>(val));
70 _init(std::move(val));
74 std::enable_if_t<std::is_same<std::decay_t<U>, T>::value> * =
nullptr>
76 return _assign(std::forward<U>(val));
110 return std::move(
_val);
114 return std::move(
_val);
117 constexpr
explicit operator bool()
const {
return _engaged; }
142 return a &&
b ? *a == *
b : !a && !
b;
162 struct hash<
zxcvbn::optional::optional<T>> {
165 return std::hash<T>{}(*v);
constexpr optional< typename std::decay< T >::type > make_optional(T &&value)
constexpr const T & operator*() const &
optional & operator=(U &&val)
constexpr optional(T &&val)
constexpr bool operator==(optional< T > f, nullopt_t)
constexpr optional(const T &val)
boost::optional< T > Optional
Substitute for C++17 std::optional.
constexpr T && operator*() &&
optional & operator=(const optional &val)
constexpr const T * operator->() const
optional & _assign(T2 &&val)
constexpr T * operator->()
constexpr nullopt_t nullopt
constexpr T & operator*() &
constexpr T && operator*() const &&
optional & operator=(optional &&val)
constexpr optional(nullopt_t)
optional(const optional &val)
constexpr bool operator!=(optional< T > f, nullopt_t n)
std::size_t operator()(const zxcvbn::optional::optional< T > &v) const
bad_optional_access(const char *a)