\hypertarget{memory_8h}{}\doxysection{kblib/memory.h File Reference}
\label{memory_8h}\index{kblib/memory.h@{kblib/memory.h}}


Provides utilities to enable safe and expressive memory management and low-\/level memory manipulation.  


{\ttfamily \#include \char`\"{}algorithm.\+h\char`\"{}}\newline
{\ttfamily \#include \char`\"{}tdecl.\+h\char`\"{}}\newline
{\ttfamily \#include $<$utility$>$}\newline
{\ttfamily \#include $<$vector$>$}\newline
Include dependency graph for memory.\+h\+:\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=350pt]{memory_8h__incl}
\end{center}
\end{figure}
This graph shows which files directly or indirectly include this file\+:\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=298pt]{memory_8h__dep__incl}
\end{center}
\end{figure}
\doxysubsection*{Classes}
\begin{DoxyCompactItemize}
\item 
struct \mbox{\hyperlink{structkblib_1_1null__construct}{kblib\+::null\+\_\+construct$<$ T, bool $>$}}
\item 
struct \mbox{\hyperlink{structkblib_1_1null__construct_3_01_t_00_01true_01_4}{kblib\+::null\+\_\+construct$<$ T, true $>$}}
\item 
struct \mbox{\hyperlink{structkblib_1_1detail__memory_1_1filter__deleter__pointer}{kblib\+::detail\+\_\+memory\+::filter\+\_\+deleter\+\_\+pointer$<$ D, T, V $>$}}
\item 
struct \mbox{\hyperlink{structkblib_1_1detail__memory_1_1filter__deleter__pointer_3_01_d_00_01_t_00_01void__t_3_01typename_01_d_1_1pointer_01_4_01_4}{kblib\+::detail\+\_\+memory\+::filter\+\_\+deleter\+\_\+pointer$<$ D, T, void\+\_\+t$<$ typename D\+::pointer $>$ $>$}}
\item 
struct \mbox{\hyperlink{structkblib_1_1detail__memory_1_1as__base__class_3_01_t_00_01false_00_01true_01_4}{kblib\+::detail\+\_\+memory\+::as\+\_\+base\+\_\+class$<$ T, false, true $>$}}
\item 
struct \mbox{\hyperlink{structkblib_1_1detail__memory_1_1as__base__class_3_01_t_00_01true_00_01true_01_4}{kblib\+::detail\+\_\+memory\+::as\+\_\+base\+\_\+class$<$ T, true, true $>$}}
\item 
struct \mbox{\hyperlink{structkblib_1_1detail__memory_1_1as__base__class_3_01_r_07_6_08_07_a_08_01noexcept_07_e_08_00_01false_00_01false_01_4}{kblib\+::detail\+\_\+memory\+::as\+\_\+base\+\_\+class$<$ R(\&)(\+A) noexcept(\+E), false, false $>$}}
\item 
struct \mbox{\hyperlink{structkblib_1_1detail__memory_1_1as__base__class_3_01_t_01_6_00_01false_00_01true_01_4}{kblib\+::detail\+\_\+memory\+::as\+\_\+base\+\_\+class$<$ T \&, false, true $>$}}
\item 
struct \mbox{\hyperlink{structkblib_1_1detail__memory_1_1noop__t}{kblib\+::detail\+\_\+memory\+::noop\+\_\+t}}
\item 
struct \mbox{\hyperlink{structkblib_1_1detail__memory_1_1value__init}{kblib\+::detail\+\_\+memory\+::value\+\_\+init}}
\item 
struct \mbox{\hyperlink{structkblib_1_1detail__memory_1_1rule__zero}{kblib\+::detail\+\_\+memory\+::rule\+\_\+zero$<$ T, Construct, Destroy $>$}}
\item 
struct \mbox{\hyperlink{structkblib_1_1detail__memory_1_1on__destroy}{kblib\+::detail\+\_\+memory\+::on\+\_\+destroy$<$ T, D $>$}}
\item 
class \mbox{\hyperlink{classkblib_1_1live__wrapper}{kblib\+::live\+\_\+wrapper$<$ T $>$}}
\item 
struct \mbox{\hyperlink{structkblib_1_1live__wrapper_1_1__destroy}{kblib\+::live\+\_\+wrapper$<$ T $>$\+::\+\_\+destroy}}
\item 
class \mbox{\hyperlink{classkblib_1_1live__wrapper_3_01const_01_t_01_4}{kblib\+::live\+\_\+wrapper$<$ const T $>$}}
\item 
struct \mbox{\hyperlink{structkblib_1_1detail__memory_1_1template__param_3_01_c_3_01_t_01_4_01_4}{kblib\+::detail\+\_\+memory\+::template\+\_\+param$<$ C$<$ T $>$ $>$}}
\item 
struct \mbox{\hyperlink{structkblib_1_1detail__memory_1_1live__ptr__base}{kblib\+::detail\+\_\+memory\+::live\+\_\+ptr\+\_\+base$<$ D $>$}}
\item 
class \mbox{\hyperlink{classkblib_1_1live__ptr}{kblib\+::live\+\_\+ptr$<$ T $>$}}
\item 
class \mbox{\hyperlink{classkblib_1_1live__ptr_3_01const_01m_t_01_4}{kblib\+::live\+\_\+ptr$<$ const m\+T $>$}}
\item 
class \mbox{\hyperlink{classkblib_1_1cond__ptr}{kblib\+::cond\+\_\+ptr$<$ T, Deleter $>$}}
\item 
class \mbox{\hyperlink{classkblib_1_1cond__ptr_3_01_t_0f_0e_00_01_deleter_01_4}{kblib\+::cond\+\_\+ptr$<$ T\mbox{[}$\,$\mbox{]}, Deleter $>$}}
\end{DoxyCompactItemize}
\doxysubsection*{Namespaces}
\begin{DoxyCompactItemize}
\item 
namespace \mbox{\hyperlink{namespacekblib}{kblib}}
\begin{DoxyCompactList}\small\item\em The main namespace in which all entities from kblib are defined. \end{DoxyCompactList}\item 
namespace \mbox{\hyperlink{namespacekblib_1_1detail__memory}{kblib\+::detail\+\_\+memory}}
\end{DoxyCompactItemize}
\doxysubsection*{Typedefs}
\begin{DoxyCompactItemize}
\item 
{\footnotesize template$<$typename D , typename T $>$ }\\using \mbox{\hyperlink{namespacekblib_1_1detail__memory_a9cb8ba19f19eee413f3cb3a221bb3a60}{kblib\+::detail\+\_\+memory\+::filter\+\_\+deleter\+\_\+pointer\+\_\+t}} = typename filter\+\_\+deleter\+\_\+pointer$<$ D, T $>$\+::type
\end{DoxyCompactItemize}
\doxysubsection*{Functions}
\begin{DoxyCompactItemize}
\item 
{\footnotesize template$<$typename T , typename Deleter $>$ }\\auto \mbox{\hyperlink{namespacekblib_af2d860ddf535b7091b11fc07aabe472f}{kblib\+::make\+\_\+cond\+\_\+ptr}} (std\+::unique\+\_\+ptr$<$ T, Deleter $>$ \&\&arg) noexcept -\/$>$ cond\+\_\+ptr$<$ T, Deleter $>$
\item 
{\footnotesize template$<$typename T $>$ }\\auto \mbox{\hyperlink{namespacekblib_a52d62500a095e18991f3ad59dcc83327}{kblib\+::make\+\_\+cond\+\_\+ptr}} (T $\ast$arg, bool owner=false) noexcept -\/$>$ cond\+\_\+ptr$<$ T $>$
\item 
{\footnotesize template$<$typename T , typename Deleter $>$ }\\auto \mbox{\hyperlink{namespacekblib_a6b20de5026ac934359d2cdc1d5426611}{kblib\+::make\+\_\+cond\+\_\+ptr}} (T $\ast$arg, Deleter del) noexcept -\/$>$ cond\+\_\+ptr$<$ T, Deleter $>$
\item 
{\footnotesize template$<$typename T , typename Deleter $>$ }\\auto \mbox{\hyperlink{namespacekblib_ab19e9968b3988d68b39eaf3b09342d6e}{kblib\+::make\+\_\+cond\+\_\+ptr}} (T $\ast$arg, bool owner, Deleter del) noexcept -\/$>$ cond\+\_\+ptr$<$ T, Deleter $>$
\end{DoxyCompactItemize}


\doxysubsection{Detailed Description}
Provides utilities to enable safe and expressive memory management and low-\/level memory manipulation. 

\begin{DoxyAuthor}{Author}
killerbee 
\end{DoxyAuthor}
\begin{DoxyDate}{Date}
2019-\/2021 
\end{DoxyDate}
\begin{DoxyCopyright}{Copyright}
GNU General Public Licence v3.\+0 
\end{DoxyCopyright}


Definition in file \mbox{\hyperlink{memory_8h_source}{memory.\+h}}.

