Skip to content

Commit 47c7fd5

Browse files
committed
delegate to std::experimental
1 parent 37abed8 commit 47c7fd5

File tree

1 file changed

+26
-32
lines changed

1 file changed

+26
-32
lines changed

include/beman/scope/scope.hpp

Lines changed: 26 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,11 @@
33
#ifndef BEMAN_SCOPE_HPP
44
#define BEMAN_SCOPE_HPP
55

6+
#include <type_traits>
7+
#include <utility>
8+
9+
#include <experimental/scope>
10+
611
namespace beman::scope {
712

813
// -- 7.6.7 Feature test macro --
@@ -13,22 +18,39 @@ namespace beman::scope {
1318
// -- 7.5.1 Header <scope> synopsis [scope.syn] --
1419
//
1520
// namespace std {
21+
1622
// template <class EF>
1723
// class scope_exit;
18-
//
24+
template <class EF>
25+
using scope_exit = std::experimental::scope_exit<EF>;
26+
1927
// template <class EF>
2028
// class scope_fail;
21-
//
29+
template <class EF>
30+
using scope_fail = std::experimental::scope_fail<EF>;
31+
2232
// template <class EF>
2333
// class scope_success;
24-
//
34+
template <class EF>
35+
using scope_success = std::experimental::scope_success<EF>;
36+
2537
// template <class R, class D>
2638
// class unique_resource;
27-
//
39+
template <class R, class D>
40+
using unique_resource = std::experimental::unique_resource<R, D>;
41+
2842
// // factory function
2943
// template <class R, class D, class S = decay_t<R>>
3044
// unique_resource<decay_t<R>, decay_t<D>>
3145
// make_unique_resource_checked(R&& r, const S& invalid, D&& d) noexcept(see below);
46+
47+
template <class R, class D, class S = std::decay_t<R>>
48+
unique_resource<std::decay_t<R>, std::decay_t<D>>
49+
make_unique_resource_checked(R&& r, const S& invalid, D&& d) noexcept(noexcept(
50+
std::experimental::make_unique_resource_checked(std::forward(r), std::forward(invalid), std::forward(d)))) {
51+
return std::experimental::make_unique_resource_checked(std::forward(r), std::forward(invalid), std::forward(d));
52+
}
53+
3254
// } // namespace std
3355
//
3456

@@ -59,7 +81,6 @@ namespace beman::scope {
5981
// template <class EF>
6082
// scope_guard(EF) -> scope_guard<EF>;
6183
//
62-
6384
// -- 7.6.1 Class template unique_resource [scope.unique_resource.class] --
6485
//
6586
// template <class R, class D>
@@ -93,33 +114,6 @@ namespace beman::scope {
93114
// template <typename R, typename D>
94115
// unique_resource(R, D) -> unique_resource<R, D>;
95116

96-
// TODO: Implement
97-
struct scope_exit {
98-
template <typename F>
99-
scope_exit(F) {}
100-
~scope_exit() {
101-
// TODO: Cleanup
102-
}
103-
};
104-
105-
// TODO: Implement
106-
struct scope_fail {
107-
template <typename F>
108-
scope_fail(F) {}
109-
~scope_fail() {
110-
// TODO: Cleanup
111-
}
112-
};
113-
114-
// TODO: Implement
115-
struct scope_success {
116-
template <typename F>
117-
scope_success(F) {}
118-
~scope_success() {
119-
// TODO: Cleanup
120-
}
121-
};
122-
123117
} // namespace beman::scope
124118

125119
#endif // BEMAN_SCOPE_HPP

0 commit comments

Comments
 (0)