55
66namespace beman ::scope {
77
8+ <<<<<<< HEAD
89// TODO: Implement
910struct 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