CppCommon 1.0.5.0
C++ Common Library
Loading...
Searching...
No Matches
resource.h
Go to the documentation of this file.
1
9#ifndef CPPCOMMON_UTILITY_RESOURCE_H
10#define CPPCOMMON_UTILITY_RESOURCE_H
11
12#include <memory>
13
14namespace CppCommon {
15
17
42template <typename T, typename TCleaner>
43auto resource(T handle, TCleaner cleaner)
44{
45 return std::unique_ptr<typename std::remove_pointer<T>::type, TCleaner>(handle, cleaner);
46}
47
49
53template <typename TCleaner>
54auto resource(void* handle, TCleaner cleaner)
55{
56 return std::unique_ptr<void, TCleaner>(handle, cleaner);
57}
58
60
63template <typename TCleaner>
64auto resource(TCleaner cleaner)
65{
66 return std::unique_ptr<void, TCleaner>(&cleaner, cleaner);
67}
68
69} // namespace CppCommon
70
71#endif // CPPCOMMON_UTILITY_RESOURCE_H
C++ Common project definitions.
auto resource(T handle, TCleaner cleaner)
Resource smart cleaner pattern.
Definition resource.h:43