summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--libcxx/include/optional78
-rw-r--r--libcxx/test/std/utilities/optional/optional.comp_with_t/equal.pass.cpp4
-rw-r--r--libcxx/test/std/utilities/optional/optional.comp_with_t/greater.pass.cpp4
-rw-r--r--libcxx/test/std/utilities/optional/optional.comp_with_t/greater_equal.pass.cpp4
-rw-r--r--libcxx/test/std/utilities/optional/optional.comp_with_t/less_equal.pass.cpp4
-rw-r--r--libcxx/test/std/utilities/optional/optional.comp_with_t/less_than.pass.cpp4
-rw-r--r--libcxx/test/std/utilities/optional/optional.comp_with_t/not_equal.pass.cpp4
-rw-r--r--libcxx/test/std/utilities/optional/optional.relops/equal.pass.cpp2
-rw-r--r--libcxx/test/std/utilities/optional/optional.relops/greater_equal.pass.cpp2
-rw-r--r--libcxx/test/std/utilities/optional/optional.relops/greater_than.pass.cpp2
-rw-r--r--libcxx/test/std/utilities/optional/optional.relops/less_equal.pass.cpp2
-rw-r--r--libcxx/test/std/utilities/optional/optional.relops/less_than.pass.cpp2
-rw-r--r--libcxx/test/std/utilities/optional/optional.relops/not_equal.pass.cpp2
13 files changed, 58 insertions, 56 deletions
diff --git a/libcxx/include/optional b/libcxx/include/optional
index 118d7178288..8c7a242113a 100644
--- a/libcxx/include/optional
+++ b/libcxx/include/optional
@@ -17,29 +17,31 @@
// C++1z
namespace std {
- // 20.6.3, optional for object types
+ // 23.6.3, optional for object types
template <class T> class optional;
- // 20.6.4, no-value state indicator
+ // 23.6.4, no-value state indicator
struct nullopt_t{see below };
constexpr nullopt_t nullopt(unspecified );
- // 20.6.5, class bad_optional_access
+ // 23.6.5, class bad_optional_access
class bad_optional_access;
- // 20.6.6, relational operators
- template <class T>
- constexpr bool operator==(const optional<T>&, const optional<T>&);
- template <class T>
- constexpr bool operator!=(const optional<T>&, const optional<T>&);
- template <class T>
- constexpr bool operator<(const optional<T>&, const optional<T>&);
- template <class T>
- constexpr bool operator>(const optional<T>&, const optional<T>&);
- template <class T>
- constexpr bool operator<=(const optional<T>&, const optional<T>&);
- template <class T>
- constexpr bool operator>=(const optional<T>&, const optional<T>&);
+ // 23.6.6, relational operators
+ template <class T, class U>
+ constexpr bool operator==(const optional<T>&, const optional<U>&);
+ template <class T, class U>
+ constexpr bool operator!=(const optional<T>&, const optional<U>&);
+ template <class T, class U>
+ constexpr bool operator<(const optional<T>&, const optional<U>&);
+ template <class T, class U>
+ constexpr bool operator>(const optional<T>&, const optional<U>&);
+ template <class T, class U>
+ constexpr bool operator<=(const optional<T>&, const optional<U>&);
+ template <class T, class U>
+ constexpr bool operator>=(const optional<T>&, const optional<U>&);
+
+ // 23.6.7 comparison with nullopt
template <class T> constexpr bool operator==(const optional<T>&, nullopt_t) noexcept;
template <class T> constexpr bool operator==(nullopt_t, const optional<T>&) noexcept;
template <class T> constexpr bool operator!=(const optional<T>&, nullopt_t) noexcept;
@@ -53,21 +55,21 @@ namespace std {
template <class T> constexpr bool operator>=(const optional<T>&, nullopt_t) noexcept;
template <class T> constexpr bool operator>=(nullopt_t, const optional<T>&) noexcept;
- // 20.6.8, comparison with T
- template <class T> constexpr bool operator==(const optional<T>&, const T&);
- template <class T> constexpr bool operator==(const T&, const optional<T>&);
- template <class T> constexpr bool operator!=(const optional<T>&, const T&);
- template <class T> constexpr bool operator!=(const T&, const optional<T>&);
- template <class T> constexpr bool operator<(const optional<T>&, const T&);
- template <class T> constexpr bool operator<(const T&, const optional<T>&);
- template <class T> constexpr bool operator<=(const optional<T>&, const T&);
- template <class T> constexpr bool operator<=(const T&, const optional<T>&);
- template <class T> constexpr bool operator>(const optional<T>&, const T&);
- template <class T> constexpr bool operator>(const T&, const optional<T>&);
- template <class T> constexpr bool operator>=(const optional<T>&, const T&);
- template <class T> constexpr bool operator>=(const T&, const optional<T>&);
-
- // 20.6.9, specialized algorithms
+ // 23.6.8, comparison with T
+ template <class T, class U> constexpr bool operator==(const optional<T>&, const U&);
+ template <class T, class U> constexpr bool operator==(const U&, const optional<T>&);
+ template <class T, class U> constexpr bool operator!=(const optional<T>&, const U&);
+ template <class T, class U> constexpr bool operator!=(const U&, const optional<T>&);
+ template <class T, class U> constexpr bool operator<(const optional<T>&, const U&);
+ template <class T, class U> constexpr bool operator<(const U&, const optional<T>&);
+ template <class T, class U> constexpr bool operator<=(const optional<T>&, const U&);
+ template <class T, class U> constexpr bool operator<=(const U&, const optional<T>&);
+ template <class T, class U> constexpr bool operator>(const optional<T>&, const U&);
+ template <class T, class U> constexpr bool operator>(const U&, const optional<T>&);
+ template <class T, class U> constexpr bool operator>=(const optional<T>&, const U&);
+ template <class T, class U> constexpr bool operator>=(const U&, const optional<T>&);
+
+ // 23.6.9, specialized algorithms
template <class T> void swap(optional<T>&, optional<T>&) noexcept(see below );
template <class T> constexpr optional<see below > make_optional(T&&);
template <class T, class... Args>
@@ -75,7 +77,7 @@ namespace std {
template <class T, class U, class... Args>
constexpr optional<T> make_optional(initializer_list<U> il, Args&&... args);
- // 20.6.10, hash support
+ // 23.6.10, hash support
template <class T> struct hash;
template <class T> struct hash<optional<T>>;
@@ -83,7 +85,7 @@ namespace std {
public:
using value_type = T;
- // 20.6.3.1, constructors
+ // 23.6.3.1, constructors
constexpr optional() noexcept;
constexpr optional(nullopt_t) noexcept;
optional(const optional &);
@@ -98,10 +100,10 @@ namespace std {
template <class U>
constexpr EXPLICIT optional(optional<U> &&);
- // 20.6.3.2, destructor
+ // 23.6.3.2, destructor
~optional();
- // 20.6.3.3, assignment
+ // 23.6.3.3, assignment
optional &operator=(nullopt_t) noexcept;
optional &operator=(const optional &);
optional &operator=(optional &&) noexcept(see below );
@@ -112,10 +114,10 @@ namespace std {
template <class U, class... Args>
T& emplace(initializer_list<U>, Args &&...);
- // 20.6.3.4, swap
+ // 23.6.3.4, swap
void swap(optional &) noexcept(see below );
- // 20.6.3.5, observers
+ // 23.6.3.5, observers
constexpr T const *operator->() const;
constexpr T *operator->();
constexpr T const &operator*() const &;
@@ -131,7 +133,7 @@ namespace std {
template <class U> constexpr T value_or(U &&) const &;
template <class U> constexpr T value_or(U &&) &&;
- // 20.6.3.6, modifiers
+ // 23.6.3.6, modifiers
void reset() noexcept;
private:
diff --git a/libcxx/test/std/utilities/optional/optional.comp_with_t/equal.pass.cpp b/libcxx/test/std/utilities/optional/optional.comp_with_t/equal.pass.cpp
index 29fb7a8431f..dc69739271b 100644
--- a/libcxx/test/std/utilities/optional/optional.comp_with_t/equal.pass.cpp
+++ b/libcxx/test/std/utilities/optional/optional.comp_with_t/equal.pass.cpp
@@ -10,8 +10,8 @@
// UNSUPPORTED: c++98, c++03, c++11, c++14
// <optional>
-// template <class T> constexpr bool operator==(const optional<T>& x, const T& v);
-// template <class T> constexpr bool operator==(const T& v, const optional<T>& x);
+// template <class T, class U> constexpr bool operator==(const optional<T>& x, const U& v);
+// template <class T, class U> constexpr bool operator==(const U& v, const optional<T>& x);
#include <optional>
diff --git a/libcxx/test/std/utilities/optional/optional.comp_with_t/greater.pass.cpp b/libcxx/test/std/utilities/optional/optional.comp_with_t/greater.pass.cpp
index ae34eb20517..e1bad12e3f6 100644
--- a/libcxx/test/std/utilities/optional/optional.comp_with_t/greater.pass.cpp
+++ b/libcxx/test/std/utilities/optional/optional.comp_with_t/greater.pass.cpp
@@ -10,8 +10,8 @@
// UNSUPPORTED: c++98, c++03, c++11, c++14
// <optional>
-// template <class T> constexpr bool operator>(const optional<T>& x, const T& v);
-// template <class T> constexpr bool operator>(const T& v, const optional<T>& x);
+// template <class T, class U> constexpr bool operator>(const optional<T>& x, const U& v);
+// template <class T, class U> constexpr bool operator>(const U& v, const optional<T>& x);
#include <optional>
diff --git a/libcxx/test/std/utilities/optional/optional.comp_with_t/greater_equal.pass.cpp b/libcxx/test/std/utilities/optional/optional.comp_with_t/greater_equal.pass.cpp
index dac94002661..342ddffc2c7 100644
--- a/libcxx/test/std/utilities/optional/optional.comp_with_t/greater_equal.pass.cpp
+++ b/libcxx/test/std/utilities/optional/optional.comp_with_t/greater_equal.pass.cpp
@@ -10,8 +10,8 @@
// UNSUPPORTED: c++98, c++03, c++11, c++14
// <optional>
-// template <class T> constexpr bool operator>=(const optional<T>& x, const T& v);
-// template <class T> constexpr bool operator>=(const T& v, const optional<T>& x);
+// template <class T, class U> constexpr bool operator>=(const optional<T>& x, const U& v);
+// template <class T, class U> constexpr bool operator>=(const U& v, const optional<T>& x);
#include <optional>
diff --git a/libcxx/test/std/utilities/optional/optional.comp_with_t/less_equal.pass.cpp b/libcxx/test/std/utilities/optional/optional.comp_with_t/less_equal.pass.cpp
index b71f8363b0a..bcf6afcc6bf 100644
--- a/libcxx/test/std/utilities/optional/optional.comp_with_t/less_equal.pass.cpp
+++ b/libcxx/test/std/utilities/optional/optional.comp_with_t/less_equal.pass.cpp
@@ -10,8 +10,8 @@
// UNSUPPORTED: c++98, c++03, c++11, c++14
// <optional>
-// template <class T> constexpr bool operator<=(const optional<T>& x, const T& v);
-// template <class T> constexpr bool operator<=(const T& v, const optional<T>& x);
+// template <class T, class U> constexpr bool operator<=(const optional<T>& x, const U& v);
+// template <class T, class U> constexpr bool operator<=(const U& v, const optional<T>& x);
#include <optional>
diff --git a/libcxx/test/std/utilities/optional/optional.comp_with_t/less_than.pass.cpp b/libcxx/test/std/utilities/optional/optional.comp_with_t/less_than.pass.cpp
index 84456b3baa6..3d5e2144a96 100644
--- a/libcxx/test/std/utilities/optional/optional.comp_with_t/less_than.pass.cpp
+++ b/libcxx/test/std/utilities/optional/optional.comp_with_t/less_than.pass.cpp
@@ -10,8 +10,8 @@
// UNSUPPORTED: c++98, c++03, c++11, c++14
// <optional>
-// template <class T> constexpr bool operator<(const optional<T>& x, const T& v);
-// template <class T> constexpr bool operator<(const T& v, const optional<T>& x);
+// template <class T, class U> constexpr bool operator<(const optional<T>& x, const U& v);
+// template <class T, class U> constexpr bool operator<(const U& v, const optional<T>& x);
#include <optional>
diff --git a/libcxx/test/std/utilities/optional/optional.comp_with_t/not_equal.pass.cpp b/libcxx/test/std/utilities/optional/optional.comp_with_t/not_equal.pass.cpp
index a4ffdc25e72..7da9b7ba7a0 100644
--- a/libcxx/test/std/utilities/optional/optional.comp_with_t/not_equal.pass.cpp
+++ b/libcxx/test/std/utilities/optional/optional.comp_with_t/not_equal.pass.cpp
@@ -10,8 +10,8 @@
// UNSUPPORTED: c++98, c++03, c++11, c++14
// <optional>
-// template <class T> constexpr bool operator!=(const optional<T>& x, const T& v);
-// template <class T> constexpr bool operator!=(const T& v, const optional<T>& x);
+// template <class T, class U> constexpr bool operator!=(const optional<T>& x, const U& v);
+// template <class T, class U> constexpr bool operator!=(const U& v, const optional<T>& x);
#include <optional>
diff --git a/libcxx/test/std/utilities/optional/optional.relops/equal.pass.cpp b/libcxx/test/std/utilities/optional/optional.relops/equal.pass.cpp
index 7667540f976..0752841d366 100644
--- a/libcxx/test/std/utilities/optional/optional.relops/equal.pass.cpp
+++ b/libcxx/test/std/utilities/optional/optional.relops/equal.pass.cpp
@@ -10,7 +10,7 @@
// UNSUPPORTED: c++98, c++03, c++11, c++14
// <optional>
-// template <class T> constexpr bool operator==(const optional<T>& x, const optional<T>& y);
+// template <class T, class U> constexpr bool operator==(const optional<T>& x, const optional<U>& y);
#include <optional>
#include <type_traits>
diff --git a/libcxx/test/std/utilities/optional/optional.relops/greater_equal.pass.cpp b/libcxx/test/std/utilities/optional/optional.relops/greater_equal.pass.cpp
index 0e05834c147..f475f379691 100644
--- a/libcxx/test/std/utilities/optional/optional.relops/greater_equal.pass.cpp
+++ b/libcxx/test/std/utilities/optional/optional.relops/greater_equal.pass.cpp
@@ -10,7 +10,7 @@
// UNSUPPORTED: c++98, c++03, c++11, c++14
// <optional>
-// template <class T> constexpr bool operator>= (const optional<T>& x, const optional<T>& y);
+// template <class T, class U> constexpr bool operator>= (const optional<T>& x, const optional<U>& y);
#include <optional>
diff --git a/libcxx/test/std/utilities/optional/optional.relops/greater_than.pass.cpp b/libcxx/test/std/utilities/optional/optional.relops/greater_than.pass.cpp
index 3946a6102ba..c3f2af9323a 100644
--- a/libcxx/test/std/utilities/optional/optional.relops/greater_than.pass.cpp
+++ b/libcxx/test/std/utilities/optional/optional.relops/greater_than.pass.cpp
@@ -10,7 +10,7 @@
// UNSUPPORTED: c++98, c++03, c++11, c++14
// <optional>
-// template <class T> constexpr bool operator> (const optional<T>& x, const optional<T>& y);
+// template <class T, class U> constexpr bool operator> (const optional<T>& x, const optional<U>& y);
#include <optional>
diff --git a/libcxx/test/std/utilities/optional/optional.relops/less_equal.pass.cpp b/libcxx/test/std/utilities/optional/optional.relops/less_equal.pass.cpp
index 5a1954154f4..35e80d3d4e5 100644
--- a/libcxx/test/std/utilities/optional/optional.relops/less_equal.pass.cpp
+++ b/libcxx/test/std/utilities/optional/optional.relops/less_equal.pass.cpp
@@ -10,7 +10,7 @@
// UNSUPPORTED: c++98, c++03, c++11, c++14
// <optional>
-// template <class T> constexpr bool operator<= (const optional<T>& x, const optional<T>& y);
+// template <class T, class U> constexpr bool operator<= (const optional<T>& x, const optional<U>& y);
#include <optional>
diff --git a/libcxx/test/std/utilities/optional/optional.relops/less_than.pass.cpp b/libcxx/test/std/utilities/optional/optional.relops/less_than.pass.cpp
index 35956e6f4a7..1dbffbd9235 100644
--- a/libcxx/test/std/utilities/optional/optional.relops/less_than.pass.cpp
+++ b/libcxx/test/std/utilities/optional/optional.relops/less_than.pass.cpp
@@ -10,7 +10,7 @@
// UNSUPPORTED: c++98, c++03, c++11, c++14
// <optional>
-// template <class T> constexpr bool operator< (const optional<T>& x, const optional<T>& y);
+// template <class T, class U> constexpr bool operator< (const optional<T>& x, const optional<U>& y);
#include <optional>
diff --git a/libcxx/test/std/utilities/optional/optional.relops/not_equal.pass.cpp b/libcxx/test/std/utilities/optional/optional.relops/not_equal.pass.cpp
index 1256537d6a8..12d9922a959 100644
--- a/libcxx/test/std/utilities/optional/optional.relops/not_equal.pass.cpp
+++ b/libcxx/test/std/utilities/optional/optional.relops/not_equal.pass.cpp
@@ -10,7 +10,7 @@
// UNSUPPORTED: c++98, c++03, c++11, c++14
// <optional>
-// template <class T> constexpr bool operator!=(const optional<T>& x, const optional<T>& y);
+// template <class T, class U> constexpr bool operator!=(const optional<T>& x, const optional<U>& y);
#include <optional>
#include <type_traits>
OpenPOWER on IntegriCloud