stdex
Additional custom or not Standard C++ covered algorithms
Loading...
Searching...
No Matches
include
stdex
memory.hpp
1
/*
2
SPDX-License-Identifier: MIT
3
Copyright © 2023 Amebis
4
*/
5
6
#pragma once
7
8
#include <memory>
9
10
namespace
stdex
11
{
15
template
<
class
T>
16
struct
no_delete
{
17
constexpr
no_delete
()
noexcept
=
default
;
18
19
template
<
class
T2, std::enable_if_t<std::is_convertible_v<T2*, T*>,
int
> = 0>
20
inline
no_delete
(
const
no_delete<T2>
&)
noexcept
{}
21
22
inline
void
operator()(T* p)
const
noexcept
{ p; }
23
};
24
28
template
<
class
T>
29
struct
no_delete
<T[]> {
30
constexpr
no_delete
()
noexcept
=
default
;
31
32
template
<
class
_Uty, std::enable_if_t<std::is_convertible_v<_Uty(*)[], T(*)[]>,
int
> = 0>
33
inline
no_delete
(
const
no_delete
<_Uty[]>&)
noexcept
{}
34
35
template
<
class
_Uty, std::enable_if_t<std::is_convertible_v<_Uty(*)[], T(*)[]>,
int
> = 0>
36
inline
void
operator()(_Uty* p)
const
noexcept
{ p; }
37
};
38
47
template
<
class
T>
48
inline
std::shared_ptr<T> make_shared_no_delete(_In_ T* p)
49
{
50
return
std::shared_ptr<T>(p,
no_delete<T>
{});
51
}
52
}
stdex::no_delete
Noop deleter.
Definition
memory.hpp:16
Generated on Mon Sep 11 2023 11:06:18 for stdex by
1.9.8