diff options
author | Boris Kolpackov <boris@codesynthesis.com> | 2016-02-09 19:06:13 +0200 |
---|---|---|
committer | Boris Kolpackov <boris@codesynthesis.com> | 2016-02-10 00:41:33 +0200 |
commit | f092580a0ed0367aca6c492d74601f53a82dac41 (patch) | |
tree | de3dcfac7a226c33f608037eb763e6acfa0c2fd9 | |
parent | a24c33aa9932435f2d8f9bdce6acaabfc5e81176 (diff) |
Implement ==, != operators for optional class template
-rw-r--r-- | butl/optional | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/butl/optional b/butl/optional index 308302e..00c204a 100644 --- a/butl/optional +++ b/butl/optional @@ -40,6 +40,20 @@ namespace butl T value_; bool null_; }; + + template <typename T> + inline auto + operator== (const optional<T>& x, const optional<T>& y) -> decltype (*x == *y) + { + return static_cast<bool> (x) == static_cast<bool> (y) && (!x || *x == *y); + } + + template <typename T> + inline auto + operator!= (const optional<T>& x, const optional<T>& y) -> decltype (x == y) + { + return !(x == y); + } } #endif // BUTL_OPTIONAL |