Skip to content

Commit 1a55b42

Browse files
Copy synopsis from p0052r10.pdf
1 parent ca7d280 commit 1a55b42

File tree

1 file changed

+90
-0
lines changed

1 file changed

+90
-0
lines changed

include/beman/scope/scope.hpp

Lines changed: 90 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55

66
namespace beman::scope {
77

8+
<<<<<<< HEAD
89
// TODO: Implement
910
struct scope_exit {
1011
template <typename F>
@@ -31,6 +32,95 @@ struct scope_success {
3132
// TODO: Cleanup
3233
}
3334
};
35+
=======
36+
// -- 7.6.7 Feature test macro --
37+
//
38+
// __cpp_lib_scope
39+
//
40+
41+
// -- 7.5.1 Header <scope> synopsis [scope.syn] --
42+
//
43+
// namespace std {
44+
// template <class EF>
45+
// class scope_exit;
46+
//
47+
// template <class EF>
48+
// class scope_fail;
49+
//
50+
// template <class EF>
51+
// class scope_success;
52+
//
53+
// template <class R, class D>
54+
// class unique_resource;
55+
//
56+
// // factory function
57+
// template <class R, class D, class S = decay_t<R>>
58+
// unique_resource<decay_t<R>, decay_t<D>>
59+
// make_unique_resource_checked(R&& r, const S& invalid, D&& d) noexcept(see below);
60+
// } // namespace std
61+
//
62+
63+
// -- 7.5.2 Scope guard class templates [scope.scope_guard] --
64+
//
65+
// template <class EF>
66+
// class scope_guard {
67+
// public:
68+
// template <class EFP>
69+
// explicit scope_guard(EFP&& f) noexcept(see below);
70+
//
71+
// scope_guard(scope_guard&& rhs) noexcept(see below);
72+
//
73+
// scope_guard(const scope_guard&) = delete;
74+
// scope_guard& operator=(const scope_guard&) = delete;
75+
// scope_guard& operator=(scope_guard&&) = delete;
76+
//
77+
// ~scope_guard() noexcept(see below);
78+
//
79+
// void release() noexcept;
80+
//
81+
// private:
82+
// EF exit_function; // exposition only
83+
// bool execute_on_destruction{true}; // exposition only
84+
// int uncaught_on_creation{uncaught_exceptions()}; // exposition only
85+
// };
86+
//
87+
// template <class EF>
88+
// scope_guard(EF) -> scope_guard<EF>;
89+
//
90+
91+
// -- 7.6.1 Class template unique_resource [scope.unique_resource.class] --
92+
//
93+
// template <class R, class D>
94+
// class unique_resource {
95+
// public:
96+
// unique_resource();
97+
// template <class RR, class DD>
98+
// unique_resource(RR&& r, DD&& d) noexcept(see below);
99+
// unique_resource(unique_resource&& rhs) noexcept(see below);
100+
// ~unique_resource();
101+
// unique_resource& operator=(unique_resource&& rhs) noexcept(see below);
102+
// void reset() noexcept;
103+
// template <class RR>
104+
// void reset(RR&& r);
105+
// void release() noexcept;
106+
// const R& get() const noexcept;
107+
// see below operator*() const noexcept;
108+
// R operator->() const noexcept;
109+
// const D& get_deleter() const noexcept;
110+
//
111+
// private:
112+
// using R1 = conditional_t<is_reference_v<R>, //
113+
// reference_wrapper<remove_reference_t<R>>, //
114+
// R>; // exposition only
115+
//
116+
// R1 resource; // exposition only
117+
// D deleter; // exposition only
118+
// bool execute_on_reset{true}; // exposition only
119+
// };
120+
//
121+
// template <typename R, typename D>
122+
// unique_resource(R, D) -> unique_resource<R, D>;
123+
>>>>>>> a30545a (Copy synopsis from p0052r10.pdf)
34124

35125
} // namespace beman::scope
36126

0 commit comments

Comments
 (0)