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-2024 Amebis
4
*/
5
6
#pragma once
7
8
#include "compat.hpp"
9
#include <memory>
10
11
namespace
stdex
12
{
16
template
<
class
T>
17
struct
no_delete
{
18
constexpr
no_delete
()
noexcept
=
default
;
19
20
template
<
class
T2, std::enable_if_t<std::is_convertible_v<T2*, T*>,
int
> = 0>
21
no_delete
(
const
no_delete<T2>
&)
noexcept
{}
22
23
void
operator()(T* p)
const
noexcept
{ _Unreferenced_(p); }
24
};
25
29
template
<
class
T>
30
struct
no_delete
<T[]> {
31
constexpr
no_delete
()
noexcept
=
default
;
32
33
template
<
class
T2, std::enable_if_t<std::is_convertible_v<T2(*)[], T(*)[]>,
int
> = 0>
34
no_delete
(
const
no_delete
<T2[]>&)
noexcept
{}
35
36
template
<
class
T2, std::enable_if_t<std::is_convertible_v<T2(*)[], T(*)[]>,
int
> = 0>
37
void
operator()(T2* p)
const
noexcept
{ p; }
38
};
39
48
template
<
class
T>
49
std::shared_ptr<T> make_shared_no_delete(_In_ T* p)
50
{
51
return
std::shared_ptr<T>(p,
no_delete<T>
{});
52
}
53
}
stdex::no_delete
Noop deleter.
Definition
memory.hpp:17
Generated on Wed Aug 14 2024 11:39:25 for stdex by
1.12.0