tmp/tmp1lb0wf79/{from.md → to.md}
RENAMED
|
@@ -1,14 +1,26 @@
|
|
| 1 |
### Header `<optional>` synopsis <a id="optional.syn">[[optional.syn]]</a>
|
| 2 |
|
| 3 |
``` cpp
|
|
|
|
| 4 |
#include <compare> // see [compare.syn]
|
| 5 |
|
| 6 |
namespace std {
|
| 7 |
// [optional.optional], class template optional
|
| 8 |
template<class T>
|
| 9 |
-
class optional;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 10 |
|
| 11 |
template<class T>
|
| 12 |
concept is-derived-from-optional = requires(const T& t) { // exposition only
|
| 13 |
[]<class U>(const optional<U>&){ }(t);
|
| 14 |
};
|
|
@@ -63,11 +75,11 @@ namespace std {
|
|
| 63 |
// [optional.specalg], specialized algorithms
|
| 64 |
template<class T>
|
| 65 |
constexpr void swap(optional<T>&, optional<T>&) noexcept(see below);
|
| 66 |
|
| 67 |
template<class T>
|
| 68 |
-
constexpr optional<
|
| 69 |
template<class T, class... Args>
|
| 70 |
constexpr optional<T> make_optional(Args&&... args);
|
| 71 |
template<class T, class U, class... Args>
|
| 72 |
constexpr optional<T> make_optional(initializer_list<U> il, Args&&... args);
|
| 73 |
|
|
|
|
| 1 |
### Header `<optional>` synopsis <a id="optional.syn">[[optional.syn]]</a>
|
| 2 |
|
| 3 |
``` cpp
|
| 4 |
+
// mostly freestanding
|
| 5 |
#include <compare> // see [compare.syn]
|
| 6 |
|
| 7 |
namespace std {
|
| 8 |
// [optional.optional], class template optional
|
| 9 |
template<class T>
|
| 10 |
+
class optional; // partially freestanding
|
| 11 |
+
|
| 12 |
+
// [optional.optional.ref], partial specialization of optional for lvalue reference types
|
| 13 |
+
template<class T>
|
| 14 |
+
class optional<T&>; // partially freestanding
|
| 15 |
+
|
| 16 |
+
template<class T>
|
| 17 |
+
constexpr bool ranges::enable_view<optional<T>> = true;
|
| 18 |
+
template<class T>
|
| 19 |
+
constexpr auto format_kind<optional<T>> = range_format::disabled;
|
| 20 |
+
template<class T>
|
| 21 |
+
constexpr bool ranges::enable_borrowed_range<optional<T&>> = true;
|
| 22 |
|
| 23 |
template<class T>
|
| 24 |
concept is-derived-from-optional = requires(const T& t) { // exposition only
|
| 25 |
[]<class U>(const optional<U>&){ }(t);
|
| 26 |
};
|
|
|
|
| 75 |
// [optional.specalg], specialized algorithms
|
| 76 |
template<class T>
|
| 77 |
constexpr void swap(optional<T>&, optional<T>&) noexcept(see below);
|
| 78 |
|
| 79 |
template<class T>
|
| 80 |
+
constexpr optional<decay_t<T>> make_optional(T&&);
|
| 81 |
template<class T, class... Args>
|
| 82 |
constexpr optional<T> make_optional(Args&&... args);
|
| 83 |
template<class T, class U, class... Args>
|
| 84 |
constexpr optional<T> make_optional(initializer_list<U> il, Args&&... args);
|
| 85 |
|