\hypertarget{memory_8h_source}{}\doxysection{memory.\+h} \label{memory_8h_source}\index{kblib/memory.h@{kblib/memory.h}} \mbox{\hyperlink{memory_8h}{Go to the documentation of this file.}} \begin{DoxyCode}{0} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00001}00001 \textcolor{comment}{/* *****************************************************************************}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00002}00002 \textcolor{comment}{ * kblib is a general utility library for C++14 and C++17, intended to provide}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00003}00003 \textcolor{comment}{ * performant high-\/level abstractions and more expressive ways to do simple}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00004}00004 \textcolor{comment}{ * things.}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00005}00005 \textcolor{comment}{ *}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00006}00006 \textcolor{comment}{ * Copyright (c) 2021 killerbee}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00007}00007 \textcolor{comment}{ *}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00008}00008 \textcolor{comment}{ * This program is free software: you can redistribute it and/or modify}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00009}00009 \textcolor{comment}{ * it under the terms of the GNU General Public License as published by}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00010}00010 \textcolor{comment}{ * the Free Software Foundation, either version 3 of the License, or}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00011}00011 \textcolor{comment}{ * (at your option) any later version.}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00012}00012 \textcolor{comment}{ *}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00013}00013 \textcolor{comment}{ * This program is distributed in the hope that it will be useful,}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00014}00014 \textcolor{comment}{ * but WITHOUT ANY WARRANTY; without even the implied warranty of}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00015}00015 \textcolor{comment}{ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00016}00016 \textcolor{comment}{ * GNU General Public License for more details.}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00017}00017 \textcolor{comment}{ *}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00018}00018 \textcolor{comment}{ * You should have received a copy of the GNU General Public License}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00019}00019 \textcolor{comment}{ * along with this program. If not, see .}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00020}00020 \textcolor{comment}{ * ****************************************************************************/}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00021}00021 } \DoxyCodeLine{\Hypertarget{memory_8h_source_l00032}00032 \textcolor{preprocessor}{\#ifndef MEMORY\_H}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00033}00033 \textcolor{preprocessor}{\#define MEMORY\_H}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00034}00034 } \DoxyCodeLine{\Hypertarget{memory_8h_source_l00035}00035 \textcolor{preprocessor}{\#include "{}\mbox{\hyperlink{algorithm_8h}{algorithm.h}}"{}}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00036}00036 \textcolor{preprocessor}{\#include "{}\mbox{\hyperlink{tdecl_8h}{tdecl.h}}"{}}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00037}00037 } \DoxyCodeLine{\Hypertarget{memory_8h_source_l00038}00038 \textcolor{preprocessor}{\#include }} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00039}00039 \textcolor{preprocessor}{\#include }} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00040}00040 } \DoxyCodeLine{\Hypertarget{memory_8h_source_l00041}00041 \textcolor{keyword}{namespace }\mbox{\hyperlink{tdecl_8h_a4b5c574c663a392148218cd4410fd7a1}{KBLIB\_NS}} \{} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00042}00042 } \DoxyCodeLine{\Hypertarget{memory_8h_source_l00043}00043 template ::value>} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00044}\mbox{\hyperlink{structkblib_1_1null__construct}{00044}} \textcolor{keyword}{struct }\mbox{\hyperlink{structkblib_1_1null__construct}{null\_construct}} \{} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00045}\mbox{\hyperlink{structkblib_1_1null__construct_a2d097c45a82e425a3201bd26eacb5a07}{00045}} \mbox{\hyperlink{structkblib_1_1null__construct_a2d097c45a82e425a3201bd26eacb5a07}{null\_construct}}() noexcept(\mbox{\hyperlink{namespacestd}{std}}::is\_nothrow\_default\_constructible::value)} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00046}00046 : t\{\} \{\}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00047}00047 } \DoxyCodeLine{\Hypertarget{memory_8h_source_l00048}\mbox{\hyperlink{structkblib_1_1null__construct_a58a339ea344341ab5769c0552416a23a}{00048}} T \mbox{\hyperlink{structkblib_1_1null__construct_a58a339ea344341ab5769c0552416a23a}{t}};} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00049}00049 } \DoxyCodeLine{\Hypertarget{memory_8h_source_l00050}\mbox{\hyperlink{structkblib_1_1null__construct_a0a19a0c2f94149d17353e2e31dba00e8}{00050}} \textcolor{keyword}{operator} T\&() \textcolor{keyword}{noexcept} \{ \textcolor{keywordflow}{return} t; \}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00051}\mbox{\hyperlink{structkblib_1_1null__construct_a9fe1ada8417770787b628c72e1985f9a}{00051}} \textcolor{keyword}{operator} \textcolor{keyword}{const} T\&() \textcolor{keyword}{const} \textcolor{keyword}{noexcept} \{ \textcolor{keywordflow}{return} t; \}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00052}00052 \};} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00053}00053 } \DoxyCodeLine{\Hypertarget{memory_8h_source_l00054}00054 \textcolor{keyword}{template} <\textcolor{keyword}{typename} T>} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00055}\mbox{\hyperlink{structkblib_1_1null__construct_3_01_t_00_01true_01_4}{00055}} \textcolor{keyword}{struct }\mbox{\hyperlink{structkblib_1_1null__construct}{null\_construct}} : \textcolor{keyword}{public} T \{} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00056}\mbox{\hyperlink{structkblib_1_1null__construct_3_01_t_00_01true_01_4_a2c8ba778cd139d4afa1c8d08b0bd88e8}{00056}} \mbox{\hyperlink{structkblib_1_1null__construct_3_01_t_00_01true_01_4_a2c8ba778cd139d4afa1c8d08b0bd88e8}{null\_construct}}() noexcept(\mbox{\hyperlink{namespacestd}{std}}::is\_nothrow\_default\_constructible::value)} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00057}00057 : T\{\} \{\}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00058}00058 \};} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00059}00059 } \DoxyCodeLine{\Hypertarget{memory_8h_source_l00060}00060 \textcolor{preprocessor}{\#if \_\_cpp\_nontype\_template\_parameter\_auto}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00061}00061 \textcolor{keyword}{template} } \DoxyCodeLine{\Hypertarget{memory_8h_source_l00062}00062 \textcolor{keyword}{struct }fun\_ptr\_deleter;} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00063}00063 } \DoxyCodeLine{\Hypertarget{memory_8h_source_l00064}00064 \textcolor{keyword}{template} <\textcolor{keyword}{typename} Arg, \textcolor{keywordtype}{void} (*FunPtr)(Arg)>} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00065}00065 \textcolor{keyword}{struct }fun\_ptr\_deleter \{} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00066}00066 \textcolor{keyword}{auto} operator()(Arg arg) \textcolor{keyword}{const} -\/> \textcolor{keywordtype}{void} \{ \textcolor{keywordflow}{return} FunPtr(arg); \}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00067}00067 \};} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00068}00068 \textcolor{preprocessor}{\#endif}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00069}00069 } \DoxyCodeLine{\Hypertarget{memory_8h_source_l00070}\mbox{\hyperlink{namespacekblib_1_1detail__memory}{00070}} \textcolor{keyword}{namespace }detail\_memory \{} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00071}00071 } \DoxyCodeLine{\Hypertarget{memory_8h_source_l00072}00072 \textcolor{keyword}{template} <\textcolor{keyword}{typename} D, \textcolor{keyword}{typename} T, \textcolor{keyword}{typename} V = \textcolor{keywordtype}{void}>} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00073}\mbox{\hyperlink{structkblib_1_1detail__memory_1_1filter__deleter__pointer}{00073}} \textcolor{keyword}{struct }\mbox{\hyperlink{structkblib_1_1detail__memory_1_1filter__deleter__pointer}{filter\_deleter\_pointer}} \{} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00074}\mbox{\hyperlink{structkblib_1_1detail__memory_1_1filter__deleter__pointer_afe3a51f067bf509c22726611ba2af8a4}{00074}} \textcolor{keyword}{using }\mbox{\hyperlink{structkblib_1_1detail__memory_1_1filter__deleter__pointer_afe3a51f067bf509c22726611ba2af8a4}{type}} = T*;} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00075}00075 \};} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00076}00076 } \DoxyCodeLine{\Hypertarget{memory_8h_source_l00077}00077 \textcolor{keyword}{template} <\textcolor{keyword}{typename} D, \textcolor{keyword}{typename} T>} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00078}\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}{00078}} \textcolor{keyword}{struct }\mbox{\hyperlink{structkblib_1_1detail__memory_1_1filter__deleter__pointer}{filter\_deleter\_pointer}}> \{} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00079}\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_a32bc26bab0c22c247e88e58b98c6d78e}{00079}} \textcolor{keyword}{using }\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_a32bc26bab0c22c247e88e58b98c6d78e}{type}} = \textcolor{keyword}{typename} std::remove\_reference::type::pointer;} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00080}00080 \};} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00081}00081 } \DoxyCodeLine{\Hypertarget{memory_8h_source_l00082}00082 \textcolor{keyword}{template} <\textcolor{keyword}{typename} D, \textcolor{keyword}{typename} T>} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00083}\mbox{\hyperlink{namespacekblib_1_1detail__memory_a9cb8ba19f19eee413f3cb3a221bb3a60}{00083}} \textcolor{keyword}{using }\mbox{\hyperlink{namespacekblib_1_1detail__memory_a9cb8ba19f19eee413f3cb3a221bb3a60}{filter\_deleter\_pointer\_t}} = \textcolor{keyword}{typename} \mbox{\hyperlink{structkblib_1_1detail__memory_1_1filter__deleter__pointer_afe3a51f067bf509c22726611ba2af8a4}{filter\_deleter\_pointer::type}};} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00084}00084 } \DoxyCodeLine{\Hypertarget{memory_8h_source_l00085}00085 \textcolor{keyword}{template} <\textcolor{keyword}{typename} T,} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00086}00086 \textcolor{keywordtype}{bool} = std::is\_class::value and not std::is\_final::value,} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00087}00087 \textcolor{keywordtype}{bool}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00088}00088 = std::is\_object::type>::value>} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00089}\mbox{\hyperlink{structkblib_1_1detail__memory_1_1as__base__class}{00089}} \textcolor{keyword}{struct }\mbox{\hyperlink{structkblib_1_1detail__memory_1_1as__base__class}{as\_base\_class}};} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00090}00090 } \DoxyCodeLine{\Hypertarget{memory_8h_source_l00091}00091 \textcolor{keyword}{template} <\textcolor{keyword}{typename} T>} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00092}\mbox{\hyperlink{structkblib_1_1detail__memory_1_1as__base__class_3_01_t_00_01false_00_01true_01_4}{00092}} \textcolor{keyword}{struct }\mbox{\hyperlink{structkblib_1_1detail__memory_1_1as__base__class}{as\_base\_class}} \{} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00093}\mbox{\hyperlink{structkblib_1_1detail__memory_1_1as__base__class_3_01_t_00_01false_00_01true_01_4_a6aebd9a1e04ce74b05e02ea97fbbdb37}{00093}} T \mbox{\hyperlink{structkblib_1_1detail__memory_1_1as__base__class_3_01_t_00_01false_00_01true_01_4_a6aebd9a1e04ce74b05e02ea97fbbdb37}{base\_}};} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00094}\mbox{\hyperlink{structkblib_1_1detail__memory_1_1as__base__class_3_01_t_00_01false_00_01true_01_4_ae11c5edc7f51c9edf23d76cde2eee624}{00094}} \textcolor{keyword}{auto} \mbox{\hyperlink{structkblib_1_1detail__memory_1_1as__base__class_3_01_t_00_01false_00_01true_01_4_ae11c5edc7f51c9edf23d76cde2eee624}{base}}() noexcept -\/> T\& \{ \textcolor{keywordflow}{return} base\_; \}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00095}\mbox{\hyperlink{structkblib_1_1detail__memory_1_1as__base__class_3_01_t_00_01false_00_01true_01_4_a829d0a4219d2143b88e6bf8b88e6baab}{00095}} \textcolor{keyword}{auto} \mbox{\hyperlink{structkblib_1_1detail__memory_1_1as__base__class_3_01_t_00_01false_00_01true_01_4_a829d0a4219d2143b88e6bf8b88e6baab}{base}}() const noexcept -\/> const T\& \{ \textcolor{keywordflow}{return} base\_; \}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00096}\mbox{\hyperlink{structkblib_1_1detail__memory_1_1as__base__class_3_01_t_00_01false_00_01true_01_4_a90d44857dd841cb99ae27fc512eb4f76}{00096}} \textcolor{keyword}{explicit} \textcolor{keyword}{operator} T\&() \textcolor{keyword}{noexcept} \{ \textcolor{keywordflow}{return} base(); \}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00097}\mbox{\hyperlink{structkblib_1_1detail__memory_1_1as__base__class_3_01_t_00_01false_00_01true_01_4_a4ff19aae7057bf6149c76b25f6bb3d8a}{00097}} \textcolor{keyword}{explicit} \textcolor{keyword}{operator} \textcolor{keyword}{const} T\&() \textcolor{keyword}{const} \textcolor{keyword}{noexcept} \{ \textcolor{keywordflow}{return} base(); \}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00098}00098 \};} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00099}00099 } \DoxyCodeLine{\Hypertarget{memory_8h_source_l00100}00100 \textcolor{keyword}{template} <\textcolor{keyword}{typename} T>} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00101}\mbox{\hyperlink{structkblib_1_1detail__memory_1_1as__base__class_3_01_t_00_01true_00_01true_01_4}{00101}} \textcolor{keyword}{struct }\mbox{\hyperlink{structkblib_1_1detail__memory_1_1as__base__class}{as\_base\_class}} : T \{} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00102}\mbox{\hyperlink{structkblib_1_1detail__memory_1_1as__base__class_3_01_t_00_01true_00_01true_01_4_adfbe77847b3fae55334326ffdaf726ec}{00102}} \textcolor{keyword}{auto} \mbox{\hyperlink{structkblib_1_1detail__memory_1_1as__base__class_3_01_t_00_01true_00_01true_01_4_adfbe77847b3fae55334326ffdaf726ec}{base}}() noexcept -\/> T\& \{ \textcolor{keywordflow}{return} *\textcolor{keyword}{this}; \}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00103}\mbox{\hyperlink{structkblib_1_1detail__memory_1_1as__base__class_3_01_t_00_01true_00_01true_01_4_ab2c8152737598d031ae7715fd710313b}{00103}} \textcolor{keyword}{auto} \mbox{\hyperlink{structkblib_1_1detail__memory_1_1as__base__class_3_01_t_00_01true_00_01true_01_4_ab2c8152737598d031ae7715fd710313b}{base}}() const noexcept -\/> const T\& \{ \textcolor{keywordflow}{return} *\textcolor{keyword}{this}; \}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00104}00104 \textcolor{keyword}{using }T::T;} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00105}\mbox{\hyperlink{structkblib_1_1detail__memory_1_1as__base__class_3_01_t_00_01true_00_01true_01_4_ab2e374d52ae25d5f39c93f698dec3293}{00105}} \mbox{\hyperlink{structkblib_1_1detail__memory_1_1as__base__class_3_01_t_00_01true_00_01true_01_4_ab2e374d52ae25d5f39c93f698dec3293}{as\_base\_class}}(\textcolor{keyword}{const} T\& t,} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00106}00106 \mbox{\hyperlink{namespacekblib_a366272ad8baad19be4ccf8128afb04a3}{enable\_if\_t}}::value,} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00107}00107 \mbox{\hyperlink{structkblib_1_1detail__memory_1_1as__base__class}{as\_base\_class}}*> = \textcolor{keyword}{nullptr}) \textcolor{comment}{//}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00108}00108 noexcept(\mbox{\hyperlink{namespacestd}{std}}::is\_nothrow\_copy\_constructible::value)} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00109}00109 : T(t) \{\}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00110}\mbox{\hyperlink{structkblib_1_1detail__memory_1_1as__base__class_3_01_t_00_01true_00_01true_01_4_a3751d627005a35cc2a828b4b18bfe4a8}{00110}} \mbox{\hyperlink{structkblib_1_1detail__memory_1_1as__base__class_3_01_t_00_01true_00_01true_01_4_a3751d627005a35cc2a828b4b18bfe4a8}{as\_base\_class}}(T\&\& t, \mbox{\hyperlink{namespacekblib_a366272ad8baad19be4ccf8128afb04a3}{enable\_if\_t}}::value,} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00111}00111 \mbox{\hyperlink{structkblib_1_1detail__memory_1_1as__base__class}{as\_base\_class}}*> = \textcolor{keyword}{nullptr}) \textcolor{comment}{//}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00112}00112 noexcept(\mbox{\hyperlink{namespacestd}{std}}::is\_nothrow\_move\_constructible::value)} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00113}00113 : T(\mbox{\hyperlink{namespacestd}{std}}::move(t)) \{\}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00114}00114 \};} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00115}00115 } \DoxyCodeLine{\Hypertarget{memory_8h_source_l00116}00116 \textcolor{preprocessor}{\#if KBLIB\_USE\_CXX17}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00117}00117 \textcolor{keyword}{template} <\textcolor{keyword}{typename} R, \textcolor{keyword}{typename} A, \textcolor{keywordtype}{bool} E>} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00118}\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}{00118}} \textcolor{keyword}{struct }\mbox{\hyperlink{structkblib_1_1detail__memory_1_1as__base__class}{as\_base\_class}} \{} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00119}\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_ace555224ce1b510752add3aa0d2e967c}{00119}} \textcolor{keyword}{using }\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_ace555224ce1b510752add3aa0d2e967c}{type}} = R(A) \textcolor{keyword}{noexcept}(E);} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00120}\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_aa676ad57074084345e09858fffd7db29}{00120}} \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_ace555224ce1b510752add3aa0d2e967c}{type}}* \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_aa676ad57074084345e09858fffd7db29}{base\_}};} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00121}\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_a7269ddae17df6c2131f0d92b6984e9ef}{00121}} \textcolor{keyword}{auto} \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_a7269ddae17df6c2131f0d92b6984e9ef}{base}}() const noexcept -\/> \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_ace555224ce1b510752add3aa0d2e967c}{type}}\& \{ \textcolor{keywordflow}{return} *base\_; \}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00122}\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_a0e4c1e599d7aae80637bccd2f37ecd80}{00122}} \textcolor{keyword}{explicit} \textcolor{keyword}{operator} \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_ace555224ce1b510752add3aa0d2e967c}{type}}\&() \textcolor{keyword}{const} \textcolor{keyword}{noexcept} \{ \textcolor{keywordflow}{return} base(); \}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00123}00123 \};} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00124}00124 \textcolor{preprocessor}{\#else}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00125}00125 \textcolor{keyword}{template} <\textcolor{keyword}{typename} R, \textcolor{keyword}{typename} A>} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00126}00126 \textcolor{keyword}{struct }as\_base\_class \{} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00127}00127 \textcolor{keyword}{using }type = R(A);} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00128}00128 type* base\_;} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00129}00129 \textcolor{keyword}{auto} base() const noexcept -\/> type\& \{ \textcolor{keywordflow}{return} *base\_; \}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00130}00130 \textcolor{keyword}{explicit} \textcolor{keyword}{operator} type\&() \textcolor{keyword}{const} \textcolor{keyword}{noexcept} \{ \textcolor{keywordflow}{return} base(); \}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00131}00131 \};} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00132}00132 \textcolor{preprocessor}{\#endif}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00133}00133 } \DoxyCodeLine{\Hypertarget{memory_8h_source_l00134}00134 \textcolor{keyword}{template} <\textcolor{keyword}{typename} T>} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00135}\mbox{\hyperlink{structkblib_1_1detail__memory_1_1as__base__class_3_01_t_01_6_00_01false_00_01true_01_4}{00135}} \textcolor{keyword}{struct }\mbox{\hyperlink{structkblib_1_1detail__memory_1_1as__base__class}{as\_base\_class}} \{} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00136}\mbox{\hyperlink{structkblib_1_1detail__memory_1_1as__base__class_3_01_t_01_6_00_01false_00_01true_01_4_a9096bb4def135f1f180774e54977cb08}{00136}} std::reference\_wrapper \mbox{\hyperlink{structkblib_1_1detail__memory_1_1as__base__class_3_01_t_01_6_00_01false_00_01true_01_4_a9096bb4def135f1f180774e54977cb08}{base\_}};} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00137}00137 } \DoxyCodeLine{\Hypertarget{memory_8h_source_l00138}\mbox{\hyperlink{structkblib_1_1detail__memory_1_1as__base__class_3_01_t_01_6_00_01false_00_01true_01_4_ac2b5bafcfec960bf2c1c73a21b0c4781}{00138}} \textcolor{keyword}{auto} \mbox{\hyperlink{structkblib_1_1detail__memory_1_1as__base__class_3_01_t_01_6_00_01false_00_01true_01_4_ac2b5bafcfec960bf2c1c73a21b0c4781}{base}}() noexcept -\/> T\& \{ \textcolor{keywordflow}{return} base\_; \}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00139}\mbox{\hyperlink{structkblib_1_1detail__memory_1_1as__base__class_3_01_t_01_6_00_01false_00_01true_01_4_a997672d6d51378b0e961088581e9fac9}{00139}} \textcolor{keyword}{auto} \mbox{\hyperlink{structkblib_1_1detail__memory_1_1as__base__class_3_01_t_01_6_00_01false_00_01true_01_4_a997672d6d51378b0e961088581e9fac9}{base}}() const noexcept -\/> const T\& \{ \textcolor{keywordflow}{return} base\_; \}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00140}00140 } \DoxyCodeLine{\Hypertarget{memory_8h_source_l00141}\mbox{\hyperlink{structkblib_1_1detail__memory_1_1as__base__class_3_01_t_01_6_00_01false_00_01true_01_4_af9a634b02ab8466241c8170978d47b5d}{00141}} \textcolor{keyword}{explicit} \textcolor{keyword}{operator} T\&() \textcolor{keyword}{noexcept} \{ \textcolor{keywordflow}{return} base(); \}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00142}\mbox{\hyperlink{structkblib_1_1detail__memory_1_1as__base__class_3_01_t_01_6_00_01false_00_01true_01_4_a88e866166f46ce2c57b07a9e18862a1d}{00142}} \textcolor{keyword}{explicit} \textcolor{keyword}{operator} \textcolor{keyword}{const} T\&() \textcolor{keyword}{const} \textcolor{keyword}{noexcept} \{ \textcolor{keywordflow}{return} base(); \}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00143}00143 \};} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00144}00144 } \DoxyCodeLine{\Hypertarget{memory_8h_source_l00145}\mbox{\hyperlink{structkblib_1_1detail__memory_1_1noop__t}{00145}} \textcolor{keyword}{struct }\mbox{\hyperlink{structkblib_1_1detail__memory_1_1noop__t}{noop\_t}} \{} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00146}\mbox{\hyperlink{structkblib_1_1detail__memory_1_1noop__t_af7b932c2296b13d63c73d42bb1487bda}{00146}} \textcolor{keyword}{auto} \mbox{\hyperlink{structkblib_1_1detail__memory_1_1noop__t_af7b932c2296b13d63c73d42bb1487bda}{operator()}}() const noexcept -\/> \textcolor{keywordtype}{void} \{\}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00147}00147 \};} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00148}\mbox{\hyperlink{structkblib_1_1detail__memory_1_1value__init}{00148}} \textcolor{keyword}{struct }\mbox{\hyperlink{structkblib_1_1detail__memory_1_1value__init}{value\_init}} \{\};} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00149}00149 } \DoxyCodeLine{\Hypertarget{memory_8h_source_l00150}00150 \textcolor{keyword}{template} <\textcolor{keyword}{typename} T, \textcolor{keyword}{typename} Construct = noop\_t, \textcolor{keyword}{typename} Destroy = noop\_t>} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00151}\mbox{\hyperlink{structkblib_1_1detail__memory_1_1rule__zero}{00151}} \textcolor{keyword}{struct }\mbox{\hyperlink{structkblib_1_1detail__memory_1_1rule__zero}{rule\_zero}} : \mbox{\hyperlink{structkblib_1_1detail__memory_1_1as__base__class}{as\_base\_class}} \{} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00152}00152 \textcolor{keyword}{template} <\textcolor{keyword}{typename}... Args>} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00153}\mbox{\hyperlink{structkblib_1_1detail__memory_1_1rule__zero_a4e9f88e35fa831824c1e6c62fd55043a}{00153}} \mbox{\hyperlink{structkblib_1_1detail__memory_1_1rule__zero_a4e9f88e35fa831824c1e6c62fd55043a}{rule\_zero}}(Args\&\&... args)} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00154}00154 : \mbox{\hyperlink{structkblib_1_1detail__memory_1_1as__base__class}{as\_base\_class}}(\mbox{\hyperlink{namespacestd}{std}}::forward(args)...) \{\}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00155}00155 \};} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00156}00156 } \DoxyCodeLine{\Hypertarget{memory_8h_source_l00157}00157 \textcolor{keyword}{template} <\textcolor{keyword}{typename} T, \textcolor{keyword}{typename} D>} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00158}\mbox{\hyperlink{structkblib_1_1detail__memory_1_1on__destroy}{00158}} \textcolor{keyword}{struct }\mbox{\hyperlink{structkblib_1_1detail__memory_1_1on__destroy}{on\_destroy}}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00159}00159 : \mbox{\hyperlink{structkblib_1_1detail__memory_1_1as__base__class}{as\_base\_class}}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00160}00160 , \mbox{\hyperlink{structkblib_1_1detail__memory_1_1as__base__class}{as\_base\_class}} \{} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00161}\mbox{\hyperlink{structkblib_1_1detail__memory_1_1on__destroy_a97c0c44afcdae9b505bc958190d73804}{00161}} \mbox{\hyperlink{structkblib_1_1detail__memory_1_1on__destroy_a97c0c44afcdae9b505bc958190d73804}{on\_destroy}}() noexcept = default;} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00162}\mbox{\hyperlink{structkblib_1_1detail__memory_1_1on__destroy_a2b8a3d967a8dbdacce405d4b719818bb}{00162}} \mbox{\hyperlink{structkblib_1_1detail__memory_1_1on__destroy}{on\_destroy}}(const \mbox{\hyperlink{structkblib_1_1detail__memory_1_1on__destroy}{on\_destroy}}\&) noexcept(} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00163}00163 \mbox{\hyperlink{namespacestd}{std}}::is\_nothrow\_copy\_constructible::value and} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00164}00164 \mbox{\hyperlink{namespacestd}{std}}::is\_nothrow\_copy\_constructible::value)} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00165}00165 = default;} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00166}\mbox{\hyperlink{structkblib_1_1detail__memory_1_1on__destroy_a32b46388bb256858dd226c1990ea4ac3}{00166}} \mbox{\hyperlink{structkblib_1_1detail__memory_1_1on__destroy}{on\_destroy}}(\mbox{\hyperlink{structkblib_1_1detail__memory_1_1on__destroy}{on\_destroy}}\&\&) noexcept(} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00167}00167 \mbox{\hyperlink{namespacestd}{std}}::is\_nothrow\_move\_constructible::value and} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00168}00168 \mbox{\hyperlink{namespacestd}{std}}::is\_nothrow\_move\_constructible::value)} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00169}00169 = default;} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00170}\mbox{\hyperlink{structkblib_1_1detail__memory_1_1on__destroy_a81d0909b41ed8bc973c84a0ca120200a}{00170}} \mbox{\hyperlink{structkblib_1_1detail__memory_1_1on__destroy}{on\_destroy}}\& operator=(const \mbox{\hyperlink{structkblib_1_1detail__memory_1_1on__destroy}{on\_destroy}}\&) noexcept(} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00171}00171 \mbox{\hyperlink{namespacestd}{std}}::is\_nothrow\_copy\_assignable::value and} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00172}00172 \mbox{\hyperlink{namespacestd}{std}}::is\_nothrow\_copy\_assignable::value)} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00173}00173 = default;} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00174}\mbox{\hyperlink{structkblib_1_1detail__memory_1_1on__destroy_afcf89e357884090937dc14b9a7c8573e}{00174}} \mbox{\hyperlink{structkblib_1_1detail__memory_1_1on__destroy}{on\_destroy}}\& operator=(\mbox{\hyperlink{structkblib_1_1detail__memory_1_1on__destroy}{on\_destroy}}\&\&) noexcept(} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00175}00175 \mbox{\hyperlink{namespacestd}{std}}::is\_nothrow\_move\_assignable::value and} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00176}00176 \mbox{\hyperlink{namespacestd}{std}}::is\_nothrow\_move\_assignable::value)} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00177}00177 = default;} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00178}00178 } \DoxyCodeLine{\Hypertarget{memory_8h_source_l00179}00179 using \mbox{\hyperlink{structkblib_1_1detail__memory_1_1as__base__class}{as\_base\_class}}::base;} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00180}\mbox{\hyperlink{structkblib_1_1detail__memory_1_1on__destroy_ac034ef585f1cb76f96f445d831fc2d01}{00180}} operator T\&() noexcept \{ \textcolor{keywordflow}{return} base(); \}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00181}\mbox{\hyperlink{structkblib_1_1detail__memory_1_1on__destroy_a22d7fa9918b58780c0fe9db3480f9cec}{00181}} \textcolor{keyword}{operator} \textcolor{keyword}{const} T\&() \textcolor{keyword}{const} \textcolor{keyword}{noexcept} \{ \textcolor{keywordflow}{return} base(); \}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00182}00182 } \DoxyCodeLine{\Hypertarget{memory_8h_source_l00183}\mbox{\hyperlink{structkblib_1_1detail__memory_1_1on__destroy_afd4a6ad450ac6cc6404af81539344c0e}{00183}} \mbox{\hyperlink{structkblib_1_1detail__memory_1_1on__destroy_afd4a6ad450ac6cc6404af81539344c0e}{\string~on\_destroy}}() \{} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00184}00184 (\mbox{\hyperlink{namespacekblib_a9b10acd2ddaea118b990e1177f626722}{invoke}})(\textcolor{keyword}{static\_cast<}D\&\&\textcolor{keyword}{>}(*\textcolor{keyword}{this}), \textcolor{keyword}{static\_cast<}T\&\&\textcolor{keyword}{>}(*this));} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00185}00185 \}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00186}00186 \};} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00187}00187 } \DoxyCodeLine{\Hypertarget{memory_8h_source_l00188}00188 \} \textcolor{comment}{// namespace detail\_memory}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00189}00189 } \DoxyCodeLine{\Hypertarget{memory_8h_source_l00190}00190 \textcolor{keyword}{template} <\textcolor{keyword}{typename} T>} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00191}00191 \textcolor{keyword}{class }live\_ptr;} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00192}00192 } \DoxyCodeLine{\Hypertarget{memory_8h_source_l00193}00193 \textcolor{keyword}{template} <\textcolor{keyword}{typename} T>} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00194}\mbox{\hyperlink{classkblib_1_1live__wrapper}{00194}} \textcolor{keyword}{class }\mbox{\hyperlink{classkblib_1_1live__wrapper}{live\_wrapper}} \{} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00195}00195 \textcolor{keyword}{public}:} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00196}\mbox{\hyperlink{classkblib_1_1live__wrapper_a155457ec67348b3ba60dd9e7823cf85a}{00196}} \mbox{\hyperlink{classkblib_1_1live__ptr}{live\_ptr}} \mbox{\hyperlink{classkblib_1_1live__wrapper_a155457ec67348b3ba60dd9e7823cf85a}{ref}}();} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00197}\mbox{\hyperlink{classkblib_1_1live__wrapper_a5f020934e4ba45bdd6643dcc7485898c}{00197}} \mbox{\hyperlink{classkblib_1_1live__ptr}{live\_ptr}} \mbox{\hyperlink{classkblib_1_1live__wrapper_a5f020934e4ba45bdd6643dcc7485898c}{ref}}() \textcolor{keyword}{const};} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00198}\mbox{\hyperlink{classkblib_1_1live__wrapper_a5aa3612056f131b9c2c1b380f6ebac19}{00198}} \mbox{\hyperlink{classkblib_1_1live__ptr}{live\_ptr}} \mbox{\hyperlink{classkblib_1_1live__wrapper_a5aa3612056f131b9c2c1b380f6ebac19}{cref}}() \textcolor{keyword}{const};} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00199}00199 } \DoxyCodeLine{\Hypertarget{memory_8h_source_l00200}\mbox{\hyperlink{classkblib_1_1live__wrapper_a5e14adbe9ee8796c1d08add9de48b07c}{00200}} T \mbox{\hyperlink{classkblib_1_1live__wrapper_a5e14adbe9ee8796c1d08add9de48b07c}{data}};} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00201}00201 } \DoxyCodeLine{\Hypertarget{memory_8h_source_l00202}\mbox{\hyperlink{structkblib_1_1live__wrapper_1_1__destroy}{00202}} \textcolor{keyword}{struct }\mbox{\hyperlink{structkblib_1_1live__wrapper_1_1__destroy}{\_destroy}} \{} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00203}\mbox{\hyperlink{structkblib_1_1live__wrapper_1_1__destroy_aae79ae06128fe5a570961821fc37bf6f}{00203}} \textcolor{keyword}{auto} \mbox{\hyperlink{structkblib_1_1live__wrapper_1_1__destroy_aae79ae06128fe5a570961821fc37bf6f}{operator()}}(std::vector\&\& self) \textcolor{keyword}{const} \textcolor{keyword}{noexcept}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00204}00204 -\/> \textcolor{keywordtype}{void} \{} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00205}00205 \textcolor{keywordflow}{for} (\textcolor{keyword}{auto} p : self) \{} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00206}00206 \textcolor{keywordflow}{if} (p) \{} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00207}00207 *p = \textcolor{keyword}{nullptr};} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00208}00208 \}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00209}00209 \}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00210}00210 \}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00211}00211 \};} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00212}00212 } \DoxyCodeLine{\Hypertarget{memory_8h_source_l00213}00213 \mbox{\hyperlink{structkblib_1_1null__construct}{null\_construct}}<} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00214}00214 \mbox{\hyperlink{structkblib_1_1detail__memory_1_1on__destroy}{detail\_memory::on\_destroy}}, \_destroy>>} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00215}\mbox{\hyperlink{classkblib_1_1live__wrapper_adb24815bc1536416d9a5b6cc37949a1e}{00215}} \_observers\{\};} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00216}00216 \};} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00217}00217 } \DoxyCodeLine{\Hypertarget{memory_8h_source_l00218}00218 \textcolor{keyword}{template} <\textcolor{keyword}{typename} T>} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00219}\mbox{\hyperlink{classkblib_1_1live__wrapper_3_01const_01_t_01_4}{00219}} \textcolor{keyword}{class }\mbox{\hyperlink{classkblib_1_1live__wrapper}{live\_wrapper}} : \textcolor{keyword}{public} \mbox{\hyperlink{classkblib_1_1live__wrapper}{live\_wrapper}} \{\};} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00220}00220 } \DoxyCodeLine{\Hypertarget{memory_8h_source_l00221}00221 \textcolor{keyword}{namespace }detail\_memory \{} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00222}00222 } \DoxyCodeLine{\Hypertarget{memory_8h_source_l00223}00223 \textcolor{keyword}{template} <\textcolor{keyword}{typename} T>} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00224}\mbox{\hyperlink{structkblib_1_1detail__memory_1_1template__param}{00224}} \textcolor{keyword}{struct }\mbox{\hyperlink{structkblib_1_1detail__memory_1_1template__param}{template\_param}};} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00225}00225 \textcolor{keyword}{template} <\textcolor{keyword}{template} <\textcolor{keyword}{typename} T> \textcolor{keyword}{class }C, \textcolor{keyword}{typename} T>} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00226}\mbox{\hyperlink{structkblib_1_1detail__memory_1_1template__param_3_01_c_3_01_t_01_4_01_4}{00226}} \textcolor{keyword}{struct }\mbox{\hyperlink{structkblib_1_1detail__memory_1_1template__param}{template\_param}}> \{} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00227}\mbox{\hyperlink{structkblib_1_1detail__memory_1_1template__param_3_01_c_3_01_t_01_4_01_4_add2263395b94337aac194fbdbaf842e9}{00227}} \textcolor{keyword}{using }\mbox{\hyperlink{structkblib_1_1detail__memory_1_1template__param_3_01_c_3_01_t_01_4_01_4_add2263395b94337aac194fbdbaf842e9}{type}} = T;} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00228}00228 \};} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00229}00229 } \DoxyCodeLine{\Hypertarget{memory_8h_source_l00230}00230 \textcolor{keyword}{template} <\textcolor{keyword}{typename} D>} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00231}\mbox{\hyperlink{structkblib_1_1detail__memory_1_1live__ptr__base}{00231}} \textcolor{keyword}{struct }\mbox{\hyperlink{structkblib_1_1detail__memory_1_1live__ptr__base}{live\_ptr\_base}} \{} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00232}00232 \textcolor{keyword}{private}:} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00233}00233 \textcolor{keyword}{using }T = \textcolor{keyword}{typename} \mbox{\hyperlink{structkblib_1_1detail__memory_1_1template__param}{template\_param::type}};} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00234}00234 \textcolor{keyword}{using }mT = \textcolor{keyword}{typename} std::remove\_const::type;} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00235}00235 } \DoxyCodeLine{\Hypertarget{memory_8h_source_l00236}00236 \textcolor{keyword}{public}:} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00237}\mbox{\hyperlink{structkblib_1_1detail__memory_1_1live__ptr__base_ace0b9f609289104c07cf37e3278eb3e5}{00237}} \textcolor{keyword}{auto} \mbox{\hyperlink{structkblib_1_1detail__memory_1_1live__ptr__base_ace0b9f609289104c07cf37e3278eb3e5}{operator*}}() noexcept -\/> T\& \{ \textcolor{keywordflow}{return} obj-\/>data; \}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00238}\mbox{\hyperlink{structkblib_1_1detail__memory_1_1live__ptr__base_a8ee9580872e56b2bb11be5ccafe73870}{00238}} \textcolor{keyword}{auto} \mbox{\hyperlink{structkblib_1_1detail__memory_1_1live__ptr__base_a8ee9580872e56b2bb11be5ccafe73870}{operator*}}() const noexcept -\/> const T\& \{ \textcolor{keywordflow}{return} obj-\/>data; \}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00239}00239 } \DoxyCodeLine{\Hypertarget{memory_8h_source_l00240}\mbox{\hyperlink{structkblib_1_1detail__memory_1_1live__ptr__base_a1ccb5f474f39af09fba78b72b2f416db}{00240}} \textcolor{keyword}{auto} \mbox{\hyperlink{structkblib_1_1detail__memory_1_1live__ptr__base_a1ccb5f474f39af09fba78b72b2f416db}{operator-\/>}}() noexcept -\/> T* \{ \textcolor{keywordflow}{return} \&obj-\/>data; \}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00241}\mbox{\hyperlink{structkblib_1_1detail__memory_1_1live__ptr__base_a159a55eb1ce198564d1921b5558adf87}{00241}} \textcolor{keyword}{auto} \mbox{\hyperlink{structkblib_1_1detail__memory_1_1live__ptr__base_a159a55eb1ce198564d1921b5558adf87}{operator-\/>}}() const noexcept -\/> const T* \{ \textcolor{keywordflow}{return} \&obj-\/>data; \}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00242}00242 } \DoxyCodeLine{\Hypertarget{memory_8h_source_l00243}\mbox{\hyperlink{structkblib_1_1detail__memory_1_1live__ptr__base_a1b1604209cf8060fee86eede601c3131}{00243}} \textcolor{keyword}{operator} bool() const noexcept \{ \textcolor{keywordflow}{return} obj; \}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00244}00244 } \DoxyCodeLine{\Hypertarget{memory_8h_source_l00245}\mbox{\hyperlink{structkblib_1_1detail__memory_1_1live__ptr__base_ac512dd470000f7642222bff23baad7e8}{00245}} \textcolor{keyword}{friend} \textcolor{keyword}{auto} \mbox{\hyperlink{structkblib_1_1detail__memory_1_1live__ptr__base_ac512dd470000f7642222bff23baad7e8}{operator==}}(\textcolor{keyword}{const} D\& lhs, std::nullptr\_t) -\/> \textcolor{keywordtype}{bool} \{} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00246}00246 \textcolor{keywordflow}{return} not lhs;} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00247}00247 \}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00248}\mbox{\hyperlink{structkblib_1_1detail__memory_1_1live__ptr__base_a7a96f74ac6998a4a468f13c147f65e41}{00248}} \textcolor{keyword}{friend} \textcolor{keyword}{auto} \mbox{\hyperlink{structkblib_1_1detail__memory_1_1live__ptr__base_a7a96f74ac6998a4a468f13c147f65e41}{operator==}}(std::nullptr\_t, \textcolor{keyword}{const} D\& rhs) -\/> \textcolor{keywordtype}{bool} \{} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00249}00249 \textcolor{keywordflow}{return} not rhs;} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00250}00250 \}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00251}00251 } \DoxyCodeLine{\Hypertarget{memory_8h_source_l00252}\mbox{\hyperlink{structkblib_1_1detail__memory_1_1live__ptr__base_a384d82eaebc14341a3f0d232af9e363b}{00252}} \textcolor{keyword}{friend} \textcolor{keyword}{auto} \mbox{\hyperlink{structkblib_1_1detail__memory_1_1live__ptr__base_a384d82eaebc14341a3f0d232af9e363b}{operator==}}(\textcolor{keyword}{const} D\& lhs, \textcolor{keyword}{const} D\& rhs) -\/> \textcolor{keywordtype}{bool} \{} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00253}00253 \textcolor{keywordflow}{return} lhs.obj == rhs.obj;} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00254}00254 \}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00255}00255 } \DoxyCodeLine{\Hypertarget{memory_8h_source_l00256}\mbox{\hyperlink{structkblib_1_1detail__memory_1_1live__ptr__base_ab91dcd0321f3b199ced5b4cb99fbfac7}{00256}} \textcolor{keyword}{friend} \textcolor{keyword}{auto} \mbox{\hyperlink{structkblib_1_1detail__memory_1_1live__ptr__base_ab91dcd0321f3b199ced5b4cb99fbfac7}{operator==}}(\textcolor{keyword}{const} D\& lhs, \textcolor{keyword}{const} T* rhs) -\/> \textcolor{keywordtype}{bool} \{} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00257}00257 \textcolor{keywordflow}{if} (not lhs and not rhs) \{} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00258}00258 \textcolor{keywordflow}{return} \textcolor{keyword}{true};} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00259}00259 \} \textcolor{keywordflow}{else} \{} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00260}00260 \textcolor{keywordflow}{return} lhs and \&lhs.obj-\/>data == rhs;} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00261}00261 \}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00262}00262 \}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00263}\mbox{\hyperlink{structkblib_1_1detail__memory_1_1live__ptr__base_a1ac457911dc727d5be0bc862549612e4}{00263}} \textcolor{keyword}{friend} \textcolor{keyword}{auto} \mbox{\hyperlink{structkblib_1_1detail__memory_1_1live__ptr__base_a1ac457911dc727d5be0bc862549612e4}{operator==}}(\textcolor{keyword}{const} T* lhs, \textcolor{keyword}{const} D\& rhs) -\/> \textcolor{keywordtype}{bool} \{} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00264}00264 \textcolor{keywordflow}{if} (not rhs and not lhs) \{} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00265}00265 \textcolor{keywordflow}{return} \textcolor{keyword}{true};} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00266}00266 \} \textcolor{keywordflow}{else} \{} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00267}00267 \textcolor{keywordflow}{return} rhs and \&rhs.obj-\/>data == lhs;} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00268}00268 \}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00269}00269 \}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00270}00270 } \DoxyCodeLine{\Hypertarget{memory_8h_source_l00271}\mbox{\hyperlink{structkblib_1_1detail__memory_1_1live__ptr__base_a2f84c409b3dbd9744191703b69013d71}{00271}} \mbox{\hyperlink{structkblib_1_1detail__memory_1_1live__ptr__base_a2f84c409b3dbd9744191703b69013d71}{live\_ptr\_base}}() noexcept = default;} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00272}\mbox{\hyperlink{structkblib_1_1detail__memory_1_1live__ptr__base_aa462c4a95e3bc2f3985780fdc24add82}{00272}} \mbox{\hyperlink{structkblib_1_1detail__memory_1_1live__ptr__base}{live\_ptr\_base}}(\mbox{\hyperlink{classkblib_1_1live__wrapper}{live\_wrapper}}* p)} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00273}00273 : obj\{p\} \{} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00274}00274 add();} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00275}00275 \}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00276}\mbox{\hyperlink{structkblib_1_1detail__memory_1_1live__ptr__base_a94b3552380747ce4502cc9a3a029ec5e}{00276}} \textcolor{keyword}{auto} \mbox{\hyperlink{structkblib_1_1detail__memory_1_1live__ptr__base_a94b3552380747ce4502cc9a3a029ec5e}{operator=}}(\textcolor{keyword}{const} \mbox{\hyperlink{structkblib_1_1detail__memory_1_1live__ptr__base}{live\_ptr\_base}}\& o) \textcolor{keyword}{noexcept} -\/> \mbox{\hyperlink{structkblib_1_1detail__memory_1_1live__ptr__base}{live\_ptr\_base}}\& \{} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00277}00277 rem();} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00278}00278 obj = o.obj;} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00279}00279 add();} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00280}00280 \textcolor{keywordflow}{return} *\textcolor{keyword}{this};} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00281}00281 \}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00282}\mbox{\hyperlink{structkblib_1_1detail__memory_1_1live__ptr__base_a8298ecc2eecf1c6f866c5af135251aa2}{00282}} \textcolor{keyword}{auto} \mbox{\hyperlink{structkblib_1_1detail__memory_1_1live__ptr__base_a8298ecc2eecf1c6f866c5af135251aa2}{operator=}}(\mbox{\hyperlink{structkblib_1_1detail__memory_1_1live__ptr__base}{live\_ptr\_base}}\&\& o) \textcolor{keyword}{noexcept} -\/> \mbox{\hyperlink{structkblib_1_1detail__memory_1_1live__ptr__base}{live\_ptr\_base}}\& \{} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00283}00283 rem();} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00284}00284 \mbox{\hyperlink{namespacekblib_a2cc6d0e618d41f45deaaa5c6c357ed7aa3734a903022249b3010be1897042568e}{move}}(o);} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00285}00285 \textcolor{keywordflow}{return} *\textcolor{keyword}{this};} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00286}00286 \}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00287}00287 } \DoxyCodeLine{\Hypertarget{memory_8h_source_l00288}\mbox{\hyperlink{structkblib_1_1detail__memory_1_1live__ptr__base_a50ebe1175399bebb8a48d560b7179962}{00288}} \mbox{\hyperlink{structkblib_1_1detail__memory_1_1live__ptr__base_a50ebe1175399bebb8a48d560b7179962}{live\_ptr\_base}}(\textcolor{keyword}{const} \mbox{\hyperlink{structkblib_1_1detail__memory_1_1live__ptr__base}{live\_ptr\_base}}\& o)} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00289}00289 : obj\{o.obj\} \{} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00290}00290 add();} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00291}00291 \}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00292}\mbox{\hyperlink{structkblib_1_1detail__memory_1_1live__ptr__base_ad7594fc7cef145f89aae448e3de796f1}{00292}} \mbox{\hyperlink{structkblib_1_1detail__memory_1_1live__ptr__base_ad7594fc7cef145f89aae448e3de796f1}{live\_ptr\_base}}(\mbox{\hyperlink{structkblib_1_1detail__memory_1_1live__ptr__base}{live\_ptr\_base}}\&\& o) \textcolor{keyword}{noexcept} \{ \mbox{\hyperlink{namespacekblib_a2cc6d0e618d41f45deaaa5c6c357ed7aa3734a903022249b3010be1897042568e}{move}}(o.as\_D()); \}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00293}\mbox{\hyperlink{structkblib_1_1detail__memory_1_1live__ptr__base_a84c2dff4a8b615f5116561aa00a82a22}{00293}} \mbox{\hyperlink{structkblib_1_1detail__memory_1_1live__ptr__base_a84c2dff4a8b615f5116561aa00a82a22}{\string~live\_ptr\_base}}() \{ rem(); \}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00294}00294 } \DoxyCodeLine{\Hypertarget{memory_8h_source_l00295}\mbox{\hyperlink{structkblib_1_1detail__memory_1_1live__ptr__base_ab566814ec51ffae2eb002fbc725567f0}{00295}} \textcolor{keyword}{auto} \mbox{\hyperlink{structkblib_1_1detail__memory_1_1live__ptr__base_ab566814ec51ffae2eb002fbc725567f0}{operator=}}(\textcolor{keyword}{const} D\& o) -\/> D\& \{} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00296}00296 rem();} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00297}00297 obj = o.obj;} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00298}00298 add();} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00299}00299 \textcolor{keywordflow}{return} as\_D();} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00300}00300 \}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00301}\mbox{\hyperlink{structkblib_1_1detail__memory_1_1live__ptr__base_a643edec2c1834870594214ba33c30429}{00301}} \textcolor{keyword}{auto} \mbox{\hyperlink{structkblib_1_1detail__memory_1_1live__ptr__base_a643edec2c1834870594214ba33c30429}{operator=}}(D\&\& o) \textcolor{keyword}{noexcept} -\/> D\& \{} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00302}00302 this-\/>rem();} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00303}00303 this-\/>\mbox{\hyperlink{namespacekblib_a2cc6d0e618d41f45deaaa5c6c357ed7aa3734a903022249b3010be1897042568e}{move}}(o);} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00304}00304 \textcolor{keywordflow}{return} as\_D();} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00305}00305 \}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00306}00306 } \DoxyCodeLine{\Hypertarget{memory_8h_source_l00307}00307 \textcolor{keyword}{protected}:} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00308}\mbox{\hyperlink{structkblib_1_1detail__memory_1_1live__ptr__base_a9efec1b8c3e744e3ae421222edd13d11}{00308}} \textcolor{keyword}{auto} \mbox{\hyperlink{structkblib_1_1detail__memory_1_1live__ptr__base_a9efec1b8c3e744e3ae421222edd13d11}{add}}() -\/> \textcolor{keywordtype}{void} \{ obj-\/>\_observers.base().push\_back(\&obj); \}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00309}\mbox{\hyperlink{structkblib_1_1detail__memory_1_1live__ptr__base_afaa6ea1a8bd59abb036c282ba51df63a}{00309}} \textcolor{keyword}{auto} \mbox{\hyperlink{structkblib_1_1detail__memory_1_1live__ptr__base_afaa6ea1a8bd59abb036c282ba51df63a}{rem}}() -\/> \textcolor{keywordtype}{void} \{} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00310}00310 \textcolor{keywordflow}{if} (obj) \{} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00311}00311 \mbox{\hyperlink{namespacekblib_aa760b40ea7f60976c66be6d77345317b}{erase}}(obj-\/>\_observers.base(), \&obj);} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00312}00312 \}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00313}00313 \}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00314}\mbox{\hyperlink{structkblib_1_1detail__memory_1_1live__ptr__base_a701f8d581c099c142c85ad2207b00cfb}{00314}} \textcolor{keyword}{auto} \mbox{\hyperlink{structkblib_1_1detail__memory_1_1live__ptr__base_a701f8d581c099c142c85ad2207b00cfb}{move}}(D\& o) -\/> \textcolor{keywordtype}{void} \{} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00315}00315 \textcolor{keywordflow}{if} ((obj = \mbox{\hyperlink{namespacekblib_a0c3f29dc7d19ffe01f977ce294ee537a}{std::exchange}}(o.obj, \textcolor{keyword}{nullptr}))) \{} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00316}00316 std::replace(obj-\/>\_observers.base().begin(),} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00317}00317 obj-\/>\_observers.base().end(), \&o.obj, \&obj);} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00318}00318 \}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00319}00319 \}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00320}\mbox{\hyperlink{structkblib_1_1detail__memory_1_1live__ptr__base_abfc7591ca8cca1717eb89344bbd7518c}{00320}} \textcolor{keyword}{mutable} \mbox{\hyperlink{classkblib_1_1live__wrapper}{live\_wrapper}}* obj = \textcolor{keyword}{nullptr};} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00321}00321 } \DoxyCodeLine{\Hypertarget{memory_8h_source_l00322}00322 \textcolor{keyword}{private}:} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00323}00323 \textcolor{keyword}{auto} as\_D() noexcept -\/> D\& \{ \textcolor{keywordflow}{return} \textcolor{keyword}{static\_cast<}D\&\textcolor{keyword}{>}(*this); \}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00324}00324 \textcolor{keyword}{auto} as\_D() const noexcept -\/> const D\& \{} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00325}00325 \textcolor{keywordflow}{return} \textcolor{keyword}{static\_cast<}\textcolor{keyword}{const }D\&\textcolor{keyword}{>}(*this);} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00326}00326 \}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00327}00327 \};} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00328}00328 \} \textcolor{comment}{// namespace detail\_memory}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00329}00329 } \DoxyCodeLine{\Hypertarget{memory_8h_source_l00330}00330 \textcolor{keyword}{template} <\textcolor{keyword}{typename} T>} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00331}\mbox{\hyperlink{classkblib_1_1live__ptr}{00331}} \textcolor{keyword}{class }\mbox{\hyperlink{classkblib_1_1live__ptr}{live\_ptr}} : \textcolor{keyword}{public} \mbox{\hyperlink{structkblib_1_1detail__memory_1_1live__ptr__base}{detail\_memory::live\_ptr\_base}}> \{} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00332}00332 \textcolor{keyword}{using }\mbox{\hyperlink{structkblib_1_1detail__memory_1_1live__ptr__base}{base}} = \mbox{\hyperlink{structkblib_1_1detail__memory_1_1live__ptr__base}{detail\_memory::live\_ptr\_base}}>;} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00333}00333 } \DoxyCodeLine{\Hypertarget{memory_8h_source_l00334}00334 \textcolor{keyword}{public}:} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00335}\mbox{\hyperlink{classkblib_1_1live__ptr_aa70fadabd288d0656b83a1ea75e9993f}{00335}} \textcolor{keyword}{using }\mbox{\hyperlink{classkblib_1_1live__ptr_aa70fadabd288d0656b83a1ea75e9993f}{value\_type}} = T;} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00336}00336 } \DoxyCodeLine{\Hypertarget{memory_8h_source_l00337}\mbox{\hyperlink{classkblib_1_1live__ptr_a74533a8063712833bf6de9d1c1169903}{00337}} \mbox{\hyperlink{classkblib_1_1live__ptr_a74533a8063712833bf6de9d1c1169903}{live\_ptr}}() = \textcolor{keywordflow}{default};} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00338}\mbox{\hyperlink{classkblib_1_1live__ptr_a8ce53569192d499b9f5b20d55e094b7c}{00338}} \mbox{\hyperlink{classkblib_1_1live__ptr_a8ce53569192d499b9f5b20d55e094b7c}{live\_ptr}}(\textcolor{keyword}{const} \mbox{\hyperlink{classkblib_1_1live__ptr}{live\_ptr}}\& o) = \textcolor{keywordflow}{default};} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00339}\mbox{\hyperlink{classkblib_1_1live__ptr_a64c8ceecb7892916a01fcdb72359897b}{00339}} \mbox{\hyperlink{classkblib_1_1live__ptr_a64c8ceecb7892916a01fcdb72359897b}{live\_ptr}}(\mbox{\hyperlink{classkblib_1_1live__ptr}{live\_ptr}}\&\& o) \textcolor{keyword}{noexcept} = \textcolor{keywordflow}{default};} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00340}\mbox{\hyperlink{classkblib_1_1live__ptr_ab65ba9cb4c8a8877785c36dc3e7990df}{00340}} \textcolor{keyword}{auto} \mbox{\hyperlink{classkblib_1_1live__ptr_ab65ba9cb4c8a8877785c36dc3e7990df}{operator=}}(\textcolor{keyword}{const} \mbox{\hyperlink{classkblib_1_1live__ptr}{live\_ptr}}\& o) -\/> \mbox{\hyperlink{classkblib_1_1live__ptr}{live\_ptr}}\& = \textcolor{keywordflow}{default};} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00341}\mbox{\hyperlink{classkblib_1_1live__ptr_a0f3545a63d05349866c81de724df1192}{00341}} \textcolor{keyword}{auto} \mbox{\hyperlink{classkblib_1_1live__ptr_a0f3545a63d05349866c81de724df1192}{operator=}}(\mbox{\hyperlink{classkblib_1_1live__ptr}{live\_ptr}}\&\& o) \textcolor{keyword}{noexcept} -\/> \mbox{\hyperlink{classkblib_1_1live__ptr}{live\_ptr}}\& = \textcolor{keywordflow}{default};} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00342}00342 } \DoxyCodeLine{\Hypertarget{memory_8h_source_l00343}\mbox{\hyperlink{classkblib_1_1live__ptr_ac75eda47666974f76eb03f9d47419da0}{00343}} \textcolor{keyword}{explicit} \mbox{\hyperlink{classkblib_1_1live__ptr_ac75eda47666974f76eb03f9d47419da0}{live\_ptr}}(\mbox{\hyperlink{classkblib_1_1live__wrapper}{live\_wrapper}}\& o)} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00344}00344 : \mbox{\hyperlink{structkblib_1_1detail__memory_1_1live__ptr__base}{base}}\{\&o\} \{} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00345}00345 this-\/>add();} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00346}00346 \}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00347}\mbox{\hyperlink{classkblib_1_1live__ptr_a5cd54e179672d80147fdd270fbc9543c}{00347}} \textcolor{keyword}{auto} \mbox{\hyperlink{classkblib_1_1live__ptr_a5cd54e179672d80147fdd270fbc9543c}{operator=}}(\mbox{\hyperlink{classkblib_1_1live__wrapper}{live\_wrapper}}\& o) -\/> \mbox{\hyperlink{classkblib_1_1live__ptr}{live\_ptr}}\& \{} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00348}00348 this-\/>rem();} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00349}00349 this-\/>obj = \&o;} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00350}00350 this-\/>add();} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00351}00351 \textcolor{keywordflow}{return} *\textcolor{keyword}{this};} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00352}00352 \}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00353}00353 } \DoxyCodeLine{\Hypertarget{memory_8h_source_l00354}\mbox{\hyperlink{classkblib_1_1live__ptr_aa19e183c305fa8e0a10924d78a125846}{00354}} \mbox{\hyperlink{classkblib_1_1live__ptr}{\string~live\_ptr}}() = \textcolor{keywordflow}{default};} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00355}00355 } \DoxyCodeLine{\Hypertarget{memory_8h_source_l00356}00356 \textcolor{keyword}{private}:} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00357}00357 \textcolor{keyword}{friend} \textcolor{keyword}{class }\mbox{\hyperlink{classkblib_1_1live__ptr}{live\_ptr}};} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00358}00358 \};} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00359}00359 } \DoxyCodeLine{\Hypertarget{memory_8h_source_l00360}00360 \textcolor{keyword}{template} <\textcolor{keyword}{typename} mT>} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00361}\mbox{\hyperlink{classkblib_1_1live__ptr_3_01const_01m_t_01_4}{00361}} \textcolor{keyword}{class }\mbox{\hyperlink{classkblib_1_1live__ptr}{live\_ptr}}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00362}00362 : \textcolor{keyword}{public} \mbox{\hyperlink{structkblib_1_1detail__memory_1_1live__ptr__base}{detail\_memory::live\_ptr\_base}}> \{} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00363}00363 \textcolor{keyword}{using }\mbox{\hyperlink{structkblib_1_1detail__memory_1_1live__ptr__base}{base}} = \mbox{\hyperlink{structkblib_1_1detail__memory_1_1live__ptr__base}{detail\_memory::live\_ptr\_base}}>;} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00364}00364 } \DoxyCodeLine{\Hypertarget{memory_8h_source_l00365}00365 \textcolor{keyword}{public}:} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00366}\mbox{\hyperlink{classkblib_1_1live__ptr_3_01const_01m_t_01_4_a82ae643e471de671a16111e6b6baa181}{00366}} \textcolor{keyword}{using }\mbox{\hyperlink{classkblib_1_1live__ptr_3_01const_01m_t_01_4_a82ae643e471de671a16111e6b6baa181}{T}} = \textcolor{keyword}{const} mT;} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00367}\mbox{\hyperlink{classkblib_1_1live__ptr_3_01const_01m_t_01_4_ade66908ad7c1eea999c28d56a7f24417}{00367}} \textcolor{keyword}{using }\mbox{\hyperlink{classkblib_1_1live__ptr_3_01const_01m_t_01_4_ade66908ad7c1eea999c28d56a7f24417}{value\_type}} = \mbox{\hyperlink{classkblib_1_1live__ptr_3_01const_01m_t_01_4_a82ae643e471de671a16111e6b6baa181}{T}};} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00368}\mbox{\hyperlink{classkblib_1_1live__ptr_3_01const_01m_t_01_4_aa5a3d2ea8931bf775f0acc43dcbdc164}{00368}} \mbox{\hyperlink{classkblib_1_1live__ptr_3_01const_01m_t_01_4_aa5a3d2ea8931bf775f0acc43dcbdc164}{live\_ptr}}() = \textcolor{keywordflow}{default};} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00369}\mbox{\hyperlink{classkblib_1_1live__ptr_3_01const_01m_t_01_4_a25eba11120374b06a269fc04177d2042}{00369}} \mbox{\hyperlink{classkblib_1_1live__ptr_3_01const_01m_t_01_4_a25eba11120374b06a269fc04177d2042}{live\_ptr}}(\textcolor{keyword}{const} \mbox{\hyperlink{classkblib_1_1live__ptr}{live\_ptr}}\& o) = \textcolor{keywordflow}{default};} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00370}\mbox{\hyperlink{classkblib_1_1live__ptr_3_01const_01m_t_01_4_a56b83c021aca82321a98403812841f2d}{00370}} \mbox{\hyperlink{classkblib_1_1live__ptr_3_01const_01m_t_01_4_a56b83c021aca82321a98403812841f2d}{live\_ptr}}(\textcolor{keyword}{const} \mbox{\hyperlink{classkblib_1_1live__ptr}{live\_ptr}}\& o)} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00371}00371 : \mbox{\hyperlink{structkblib_1_1detail__memory_1_1live__ptr__base}{base}}\{o.obj\} \{\}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00372}\mbox{\hyperlink{classkblib_1_1live__ptr_3_01const_01m_t_01_4_ab396612a706db0e73da86a05a8713665}{00372}} \mbox{\hyperlink{classkblib_1_1live__ptr_3_01const_01m_t_01_4_ab396612a706db0e73da86a05a8713665}{live\_ptr}}(\mbox{\hyperlink{classkblib_1_1live__ptr}{live\_ptr}}\&\& o) \textcolor{keyword}{noexcept} = \textcolor{keywordflow}{default};} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00373}\mbox{\hyperlink{classkblib_1_1live__ptr_3_01const_01m_t_01_4_a824785be41bb6d006a1d09c9cc3dc7e8}{00373}} \mbox{\hyperlink{classkblib_1_1live__ptr_3_01const_01m_t_01_4_a824785be41bb6d006a1d09c9cc3dc7e8}{live\_ptr}}(\mbox{\hyperlink{classkblib_1_1live__ptr}{live\_ptr}}\&\& o) \textcolor{keyword}{noexcept} \{ this-\/>\mbox{\hyperlink{namespacekblib_a2cc6d0e618d41f45deaaa5c6c357ed7aa3734a903022249b3010be1897042568e}{move}}(o); \}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00374}\mbox{\hyperlink{classkblib_1_1live__ptr_3_01const_01m_t_01_4_a392dfc1fefa450dcbdfce9fcf2c5254f}{00374}} \textcolor{keyword}{auto} \mbox{\hyperlink{classkblib_1_1live__ptr_3_01const_01m_t_01_4_a392dfc1fefa450dcbdfce9fcf2c5254f}{operator=}}(\textcolor{keyword}{const} \mbox{\hyperlink{classkblib_1_1live__ptr}{live\_ptr}}\& o) -\/> \mbox{\hyperlink{classkblib_1_1live__ptr}{live\_ptr}}\& = \textcolor{keywordflow}{default};} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00375}\mbox{\hyperlink{classkblib_1_1live__ptr_3_01const_01m_t_01_4_a3e22c29fe7d3c978514f8dc8c6730a79}{00375}} \textcolor{keyword}{auto} \mbox{\hyperlink{classkblib_1_1live__ptr_3_01const_01m_t_01_4_a3e22c29fe7d3c978514f8dc8c6730a79}{operator=}}(\mbox{\hyperlink{classkblib_1_1live__ptr}{live\_ptr}}\&\& o) \textcolor{keyword}{noexcept} -\/> \mbox{\hyperlink{classkblib_1_1live__ptr}{live\_ptr}}\& = \textcolor{keywordflow}{default};} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00376}00376 } \DoxyCodeLine{\Hypertarget{memory_8h_source_l00377}\mbox{\hyperlink{classkblib_1_1live__ptr_3_01const_01m_t_01_4_a1a2a91dcae950006611d3852a87d2515}{00377}} \textcolor{keyword}{auto} \mbox{\hyperlink{classkblib_1_1live__ptr_3_01const_01m_t_01_4_a1a2a91dcae950006611d3852a87d2515}{operator=}}(\textcolor{keyword}{const} \mbox{\hyperlink{classkblib_1_1live__ptr}{live\_ptr}}\& o) -\/> \mbox{\hyperlink{classkblib_1_1live__ptr}{live\_ptr}}\& \{} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00378}00378 this-\/>obj = o.\mbox{\hyperlink{structkblib_1_1detail__memory_1_1live__ptr__base_abfc7591ca8cca1717eb89344bbd7518c}{obj}};} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00379}00379 this-\/>add();} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00380}00380 \textcolor{keywordflow}{return} *\textcolor{keyword}{this};} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00381}00381 \}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00382}\mbox{\hyperlink{classkblib_1_1live__ptr_3_01const_01m_t_01_4_a8ef2b2f703852278cca005f79782a350}{00382}} \textcolor{keyword}{auto} \mbox{\hyperlink{classkblib_1_1live__ptr_3_01const_01m_t_01_4_a8ef2b2f703852278cca005f79782a350}{operator=}}(\mbox{\hyperlink{classkblib_1_1live__ptr}{live\_ptr}}\&\& o) \textcolor{keyword}{noexcept} -\/> \mbox{\hyperlink{classkblib_1_1live__ptr}{live\_ptr}}\& \{} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00383}00383 this-\/>obj = o.\mbox{\hyperlink{structkblib_1_1detail__memory_1_1live__ptr__base_abfc7591ca8cca1717eb89344bbd7518c}{obj}};} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00384}00384 this-\/>add();} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00385}00385 \textcolor{keywordflow}{return} *\textcolor{keyword}{this};} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00386}00386 \}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00387}00387 } \DoxyCodeLine{\Hypertarget{memory_8h_source_l00388}\mbox{\hyperlink{classkblib_1_1live__ptr_3_01const_01m_t_01_4_a8ad61015540b06f500734dbf6a12a613}{00388}} \textcolor{keyword}{explicit} \mbox{\hyperlink{classkblib_1_1live__ptr_3_01const_01m_t_01_4_a8ad61015540b06f500734dbf6a12a613}{live\_ptr}}(\textcolor{keyword}{const} \mbox{\hyperlink{classkblib_1_1live__wrapper}{live\_wrapper}}\& o)} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00389}00389 : \mbox{\hyperlink{structkblib_1_1detail__memory_1_1live__ptr__base}{base}}\{\&o\} \{} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00390}00390 this-\/>add();} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00391}00391 \}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00392}\mbox{\hyperlink{classkblib_1_1live__ptr_3_01const_01m_t_01_4_afd4a08c1df8f3fa3d7203d6b66d73546}{00392}} \textcolor{keyword}{auto} \mbox{\hyperlink{classkblib_1_1live__ptr_3_01const_01m_t_01_4_afd4a08c1df8f3fa3d7203d6b66d73546}{operator=}}(\textcolor{keyword}{const} \mbox{\hyperlink{classkblib_1_1live__wrapper}{live\_wrapper}}\& o) -\/> \mbox{\hyperlink{classkblib_1_1live__ptr}{live\_ptr}}\& \{} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00393}00393 this-\/>rem();} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00394}00394 this-\/>obj = \&o;} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00395}00395 this-\/>add();} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00396}00396 \textcolor{keywordflow}{return} *\textcolor{keyword}{this};} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00397}00397 \}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00398}00398 } \DoxyCodeLine{\Hypertarget{memory_8h_source_l00399}\mbox{\hyperlink{classkblib_1_1live__ptr_3_01const_01m_t_01_4_aab2c4dc0f285c9032c86bdc5334de28d}{00399}} \mbox{\hyperlink{classkblib_1_1live__ptr_3_01const_01m_t_01_4_aab2c4dc0f285c9032c86bdc5334de28d}{\string~live\_ptr}}() = \textcolor{keywordflow}{default};} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00400}00400 \};} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00401}00401 } \DoxyCodeLine{\Hypertarget{memory_8h_source_l00402}00402 \textcolor{keyword}{template} <\textcolor{keyword}{typename} T>} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00403}\mbox{\hyperlink{classkblib_1_1live__wrapper_a155457ec67348b3ba60dd9e7823cf85a}{00403}} \mbox{\hyperlink{classkblib_1_1live__ptr}{live\_ptr}} \mbox{\hyperlink{classkblib_1_1live__wrapper}{live\_wrapper::ref}}() \{} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00404}00404 \textcolor{keywordflow}{return} \mbox{\hyperlink{classkblib_1_1live__ptr}{live\_ptr}}\{*\textcolor{keyword}{this}\};} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00405}00405 \}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00406}00406 } \DoxyCodeLine{\Hypertarget{memory_8h_source_l00407}00407 \textcolor{keyword}{template} <\textcolor{keyword}{typename} T>} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00408}\mbox{\hyperlink{classkblib_1_1live__wrapper_a5f020934e4ba45bdd6643dcc7485898c}{00408}} \mbox{\hyperlink{classkblib_1_1live__ptr}{live\_ptr}} \mbox{\hyperlink{classkblib_1_1live__wrapper}{live\_wrapper::ref}}()\textcolor{keyword}{ const }\{} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00409}00409 \textcolor{keywordflow}{return} \mbox{\hyperlink{classkblib_1_1live__ptr}{live\_ptr}}\{*\textcolor{keyword}{this}\};} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00410}00410 \}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00411}00411 } \DoxyCodeLine{\Hypertarget{memory_8h_source_l00412}00412 \textcolor{keyword}{template} <\textcolor{keyword}{typename} T>} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00413}\mbox{\hyperlink{classkblib_1_1live__wrapper_a5aa3612056f131b9c2c1b380f6ebac19}{00413}} \mbox{\hyperlink{classkblib_1_1live__ptr}{live\_ptr}} \mbox{\hyperlink{classkblib_1_1live__wrapper}{live\_wrapper::cref}}()\textcolor{keyword}{ const }\{} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00414}00414 \textcolor{keywordflow}{return} \mbox{\hyperlink{classkblib_1_1live__ptr}{live\_ptr}}\{*\textcolor{keyword}{this}\};} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00415}00415 \}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00416}00416 } \DoxyCodeLine{\Hypertarget{memory_8h_source_l00417}00417 \textcolor{comment}{// cond\_ptr: A pointer which can either uniquely own its referent, or which can}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00418}00418 \textcolor{comment}{// be a non-\/owning reference. Note that custom deleter support is not present;}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00419}00419 \textcolor{comment}{// however it will not implicitly strip a deleter from a unique\_ptr.}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00420}00420 } \DoxyCodeLine{\Hypertarget{memory_8h_source_l00421}00421 \textcolor{keyword}{template} <\textcolor{keyword}{typename} T, \textcolor{keyword}{typename} Deleter = std::default\_delete>} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00422}\mbox{\hyperlink{classkblib_1_1cond__ptr}{00422}} \textcolor{keyword}{class }\mbox{\hyperlink{classkblib_1_1cond__ptr}{cond\_ptr}} : \textcolor{keyword}{private} \mbox{\hyperlink{structkblib_1_1detail__memory_1_1as__base__class}{detail\_memory::as\_base\_class}} \{} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00423}00423 \textcolor{keyword}{using }\mbox{\hyperlink{structkblib_1_1detail__memory_1_1as__base__class}{d\_base}} = \mbox{\hyperlink{structkblib_1_1detail__memory_1_1as__base__class}{detail\_memory::as\_base\_class}};} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00424}00424 } \DoxyCodeLine{\Hypertarget{memory_8h_source_l00425}00425 \textcolor{keyword}{public}:} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00426}\mbox{\hyperlink{classkblib_1_1cond__ptr_ae2f122e7a4096237e00a5f1cbc7e487d}{00426}} \textcolor{keyword}{using }\mbox{\hyperlink{classkblib_1_1cond__ptr_ae2f122e7a4096237e00a5f1cbc7e487d}{pointer}} = \mbox{\hyperlink{namespacekblib_1_1detail__memory_a9cb8ba19f19eee413f3cb3a221bb3a60}{detail\_memory::filter\_deleter\_pointer\_t}};} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00427}\mbox{\hyperlink{classkblib_1_1cond__ptr_a7b63afcf80c825f1306bb54bcec71637}{00427}} \textcolor{keyword}{using }\mbox{\hyperlink{classkblib_1_1cond__ptr_a7b63afcf80c825f1306bb54bcec71637}{element\_type}} = T;} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00428}\mbox{\hyperlink{classkblib_1_1cond__ptr_a6bcd0bfc4aa82aa486846912c0559d4f}{00428}} \textcolor{keyword}{using }\mbox{\hyperlink{classkblib_1_1cond__ptr_a6bcd0bfc4aa82aa486846912c0559d4f}{deleter\_type}} = Deleter;} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00429}00429 } \DoxyCodeLine{\Hypertarget{memory_8h_source_l00430}00430 \textcolor{preprocessor}{\#if 0}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00431}00431 \textcolor{keyword}{static\_assert}(std::is\_nothrow\_invocable::value,} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00432}00432 \textcolor{stringliteral}{"{}cond\_ptr requires that get\_deleter not throw exceptions."{}});} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00433}00433 \textcolor{preprocessor}{\#endif}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00434}00434 } \DoxyCodeLine{\Hypertarget{memory_8h_source_l00435}\mbox{\hyperlink{classkblib_1_1cond__ptr_a4df32829014a485bd76ec1398454161a}{00435}} \textcolor{keyword}{using }\mbox{\hyperlink{classkblib_1_1cond__ptr_a4df32829014a485bd76ec1398454161a}{unique}} = std::unique\_ptr;} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00436}00436 } \DoxyCodeLine{\Hypertarget{memory_8h_source_l00437}\mbox{\hyperlink{classkblib_1_1cond__ptr_aac6b1d399fa73d06508b46a5aa076cab}{00437}} \mbox{\hyperlink{classkblib_1_1cond__ptr_aac6b1d399fa73d06508b46a5aa076cab}{cond\_ptr}}() noexcept = default;} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00438}\mbox{\hyperlink{classkblib_1_1cond__ptr_a90368b6e23bfb184e3c0707c90600b82}{00438}} \mbox{\hyperlink{classkblib_1_1cond__ptr}{cond\_ptr}}(\mbox{\hyperlink{namespacestd}{std}}::nullptr\_t) noexcept \{\}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00439}00439 } \DoxyCodeLine{\Hypertarget{memory_8h_source_l00440}\mbox{\hyperlink{classkblib_1_1cond__ptr_a524a265215e1ca03b5929864a0bc41cd}{00440}} \textcolor{keyword}{explicit} \mbox{\hyperlink{classkblib_1_1cond__ptr_a524a265215e1ca03b5929864a0bc41cd}{cond\_ptr}}(T* p, \textcolor{keywordtype}{bool} owner = \textcolor{keyword}{false},} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00441}00441 std::decay\_t del = \{\}) \textcolor{keyword}{noexcept}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00442}00442 : d\_base\{std::move(del)\}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00443}00443 , ptr\_(p)} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00444}00444 , owns\_(owner) \{\}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00445}\mbox{\hyperlink{classkblib_1_1cond__ptr_a621a7ad8d3d84241eecf4d94fdc58d4a}{00445}} \textcolor{keyword}{explicit} \mbox{\hyperlink{classkblib_1_1cond__ptr_a621a7ad8d3d84241eecf4d94fdc58d4a}{cond\_ptr}}(T* p, std::decay\_t del) noexcept} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00446}00446 : \mbox{\hyperlink{structkblib_1_1detail__memory_1_1as__base__class}{d\_base}}\{std::move(del)\}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00447}00447 , ptr\_(p) \{\}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00448}00448 } \DoxyCodeLine{\Hypertarget{memory_8h_source_l00449}\mbox{\hyperlink{classkblib_1_1cond__ptr_a9ba1534e6e693ee770b9fb30631a748a}{00449}} \mbox{\hyperlink{classkblib_1_1cond__ptr_a9ba1534e6e693ee770b9fb30631a748a}{cond\_ptr}}(\mbox{\hyperlink{classkblib_1_1cond__ptr_a4df32829014a485bd76ec1398454161a}{unique}}\&\& p) noexcept} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00450}00450 : \mbox{\hyperlink{structkblib_1_1detail__memory_1_1as__base__class}{d\_base}}\{p.get\_deleter()\}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00451}00451 , ptr\_(p.release())} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00452}00452 , owns\_(ptr\_) \{\}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00453}00453 } \DoxyCodeLine{\Hypertarget{memory_8h_source_l00454}\mbox{\hyperlink{classkblib_1_1cond__ptr_a6d313c971dd198e1f60b2b469f13fb28}{00454}} \mbox{\hyperlink{classkblib_1_1cond__ptr_a6d313c971dd198e1f60b2b469f13fb28}{cond\_ptr}}(\textcolor{keyword}{const} \mbox{\hyperlink{classkblib_1_1cond__ptr}{cond\_ptr}}\& other) = \textcolor{keyword}{delete};} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00455}00455 \textcolor{comment}{// cond\_ptr(const cond\_ptr\& other) noexcept}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00456}00456 \textcolor{comment}{// : d\_base\{other.get\_deleter()\}, ptr\_(other.ptr\_) \{\}}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00457}\mbox{\hyperlink{classkblib_1_1cond__ptr_afee522bce600526a781a54300709801c}{00457}} \mbox{\hyperlink{classkblib_1_1cond__ptr_afee522bce600526a781a54300709801c}{cond\_ptr}}(\mbox{\hyperlink{classkblib_1_1cond__ptr}{cond\_ptr}}\&\& other) noexcept} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00458}00458 : \mbox{\hyperlink{structkblib_1_1detail__memory_1_1as__base__class}{d\_base}}\{other.get\_deleter()\}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00459}00459 , ptr\_(other.ptr\_)} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00460}00460 , owns\_(\mbox{\hyperlink{namespacekblib_a0c3f29dc7d19ffe01f977ce294ee537a}{std::exchange}}(other.owns\_, \textcolor{keyword}{false})) \{\}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00461}00461 } \DoxyCodeLine{\Hypertarget{memory_8h_source_l00462}\mbox{\hyperlink{classkblib_1_1cond__ptr_ac0a4d3eed94e5ca93e69fcf9b8792c20}{00462}} \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{static} \textcolor{keyword}{auto} \mbox{\hyperlink{classkblib_1_1cond__ptr_ac0a4d3eed94e5ca93e69fcf9b8792c20}{adopt}}(T* p) \textcolor{keyword}{noexcept} -\/> \mbox{\hyperlink{classkblib_1_1cond__ptr}{cond\_ptr}} \{} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00463}00463 \textcolor{keywordflow}{return} \{p, \textcolor{keyword}{true}\};} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00464}00464 \}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00465}\mbox{\hyperlink{classkblib_1_1cond__ptr_a214971a17b5ba7f8bac9cdb338d3679a}{00465}} \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{static} \textcolor{keyword}{auto} \mbox{\hyperlink{classkblib_1_1cond__ptr_a214971a17b5ba7f8bac9cdb338d3679a}{adopt}}(T* p, \mbox{\hyperlink{classkblib_1_1cond__ptr_a6bcd0bfc4aa82aa486846912c0559d4f}{deleter\_type}} del) \textcolor{keyword}{noexcept}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00466}00466 -\/> \mbox{\hyperlink{classkblib_1_1cond__ptr}{cond\_ptr}} \{} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00467}00467 \textcolor{keywordflow}{return} \{p, \textcolor{keyword}{true}, del\};} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00468}00468 \}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00469}00469 } \DoxyCodeLine{\Hypertarget{memory_8h_source_l00470}\mbox{\hyperlink{classkblib_1_1cond__ptr_a19e5d2c5635cc58baa90f8c69339394b}{00470}} \textcolor{keyword}{auto} \mbox{\hyperlink{classkblib_1_1cond__ptr_a19e5d2c5635cc58baa90f8c69339394b}{operator=}}(\textcolor{keyword}{const} \mbox{\hyperlink{classkblib_1_1cond__ptr}{cond\_ptr}}\& rhs) \& -\/> \mbox{\hyperlink{classkblib_1_1cond__ptr}{cond\_ptr}}\& = \textcolor{keyword}{delete};} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00471}00471 \textcolor{comment}{// auto operator=(const cond\_ptr\& rhs) \& noexcept -\/> cond\_ptr\& \{}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00472}00472 \textcolor{comment}{// if (owns\_) \{}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00473}00473 \textcolor{comment}{// get\_deleter()(ptr\_);}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00474}00474 \textcolor{comment}{// \}}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00475}00475 \textcolor{comment}{// owns\_ = false;}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00476}00476 \textcolor{comment}{// ptr\_ = rhs.release();}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00477}00477 \textcolor{comment}{// return *this;}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00478}00478 \textcolor{comment}{// \}}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00479}\mbox{\hyperlink{classkblib_1_1cond__ptr_a86b830b4462e4ab421817034b37ddd5b}{00479}} \textcolor{keyword}{auto} \mbox{\hyperlink{classkblib_1_1cond__ptr_a86b830b4462e4ab421817034b37ddd5b}{operator=}}(\mbox{\hyperlink{classkblib_1_1cond__ptr}{cond\_ptr}}\&\& rhs) \& \textcolor{keyword}{noexcept} -\/> \mbox{\hyperlink{classkblib_1_1cond__ptr}{cond\_ptr}}\& \{} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00480}00480 \textcolor{keywordflow}{if} (owns\_) \{} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00481}00481 get\_deleter()(ptr\_);} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00482}00482 \}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00483}00483 owns\_ = rhs.\mbox{\hyperlink{classkblib_1_1cond__ptr_a518feab723272e3a07bfe33c7d1ac69a}{owns}}();} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00484}00484 \textcolor{keyword}{static\_cast<}\mbox{\hyperlink{structkblib_1_1detail__memory_1_1as__base__class}{d\_base}}\&\textcolor{keyword}{>}(*this) = \{std::move(rhs.get\_deleter())\};} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00485}00485 ptr\_ = rhs.release();} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00486}00486 \textcolor{keywordflow}{return} *\textcolor{keyword}{this};} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00487}00487 \}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00488}\mbox{\hyperlink{classkblib_1_1cond__ptr_a82a6bdb60a59c2ae44612e458c7f0026}{00488}} \textcolor{keyword}{auto} \mbox{\hyperlink{classkblib_1_1cond__ptr_a82a6bdb60a59c2ae44612e458c7f0026}{operator=}}(\mbox{\hyperlink{classkblib_1_1cond__ptr_a4df32829014a485bd76ec1398454161a}{unique}}\&\& rhs) -\/> \mbox{\hyperlink{classkblib_1_1cond__ptr}{cond\_ptr}}\& \{} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00489}00489 \textcolor{keyword}{static\_cast<}\mbox{\hyperlink{structkblib_1_1detail__memory_1_1as__base__class}{d\_base}}\&\textcolor{keyword}{>}(*this) = \{std::move(rhs.get\_deleter())\};} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00490}00490 ptr\_ = rhs.release();} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00491}00491 owns\_ = bool(ptr\_);} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00492}00492 \textcolor{keywordflow}{return} *\textcolor{keyword}{this};} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00493}00493 \}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00494}00494 } \DoxyCodeLine{\Hypertarget{memory_8h_source_l00505}\mbox{\hyperlink{classkblib_1_1cond__ptr_ab3bbf0c8c3223f83971fb2c2928042e6}{00505}} \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{auto} \mbox{\hyperlink{classkblib_1_1cond__ptr_ab3bbf0c8c3223f83971fb2c2928042e6}{to\_unique}}() \&\& \textcolor{keyword}{noexcept} -\/> \mbox{\hyperlink{classkblib_1_1cond__ptr_a4df32829014a485bd76ec1398454161a}{unique}} \{} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00506}00506 \textcolor{keywordflow}{if} (owns\_) \{} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00507}00507 \textcolor{keywordflow}{return} \{release(), std::move(get\_deleter())\};} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00508}00508 \} \textcolor{keywordflow}{else} \{} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00509}00509 \textcolor{keywordflow}{return} \{\textcolor{keyword}{nullptr}, get\_deleter()\};} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00510}00510 \}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00511}00511 \}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00512}00512 } \DoxyCodeLine{\Hypertarget{memory_8h_source_l00513}\mbox{\hyperlink{classkblib_1_1cond__ptr_a01c0993059485a01a450bbf4df40fb84}{00513}} \textcolor{keyword}{explicit} \textcolor{keyword}{operator} \mbox{\hyperlink{classkblib_1_1cond__ptr_a4df32829014a485bd76ec1398454161a}{unique}}() \&\& \textcolor{keyword}{noexcept} \{} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00514}00514 \textcolor{keywordflow}{return} std::move(*this).to\_unique();} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00515}00515 \}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00516}00516 } \DoxyCodeLine{\Hypertarget{memory_8h_source_l00517}\mbox{\hyperlink{classkblib_1_1cond__ptr_a5aac6c6de760ec559f9ecf0e7f9f85f6}{00517}} \mbox{\hyperlink{classkblib_1_1cond__ptr_a5aac6c6de760ec559f9ecf0e7f9f85f6}{\string~cond\_ptr}}() noexcept \{} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00518}00518 \textcolor{keywordflow}{if} (owns\_ and ptr\_) \{} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00519}00519 get\_deleter()(ptr\_);} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00520}00520 \}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00521}00521 \}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00522}00522 } \DoxyCodeLine{\Hypertarget{memory_8h_source_l00523}\mbox{\hyperlink{classkblib_1_1cond__ptr_adce65161246e16e2b8e2b0c77a9a9ed6}{00523}} \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{auto} \mbox{\hyperlink{classkblib_1_1cond__ptr_adce65161246e16e2b8e2b0c77a9a9ed6}{weak}}() const\& noexcept -\/> \mbox{\hyperlink{classkblib_1_1cond__ptr}{cond\_ptr}} \{} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00524}00524 \textcolor{keywordflow}{return} \mbox{\hyperlink{classkblib_1_1cond__ptr}{cond\_ptr}}\{ptr\_, \textcolor{keyword}{false}\};} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00525}00525 \}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00526}00526 } \DoxyCodeLine{\Hypertarget{memory_8h_source_l00527}\mbox{\hyperlink{classkblib_1_1cond__ptr_a518feab723272e3a07bfe33c7d1ac69a}{00527}} \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{auto} \mbox{\hyperlink{classkblib_1_1cond__ptr_a518feab723272e3a07bfe33c7d1ac69a}{owns}}() const noexcept -\/> \textcolor{keywordtype}{bool} \{ \textcolor{keywordflow}{return} owns\_; \}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00528}\mbox{\hyperlink{classkblib_1_1cond__ptr_a44a71791e46c1c3a0539116399ea602f}{00528}} \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{auto} \mbox{\hyperlink{classkblib_1_1cond__ptr_a44a71791e46c1c3a0539116399ea602f}{release}}() \& \textcolor{keyword}{noexcept} -\/> T* \{} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00529}00529 owns\_ = \textcolor{keyword}{false};} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00530}00530 \textcolor{keywordflow}{return} \mbox{\hyperlink{namespacekblib_a0c3f29dc7d19ffe01f977ce294ee537a}{std::exchange}}(ptr\_, \textcolor{keyword}{nullptr});} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00531}00531 \}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00532}00532 } \DoxyCodeLine{\Hypertarget{memory_8h_source_l00533}\mbox{\hyperlink{classkblib_1_1cond__ptr_a72205c4d0a79021139d8294692fc54df}{00533}} \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{auto} \mbox{\hyperlink{classkblib_1_1cond__ptr_a72205c4d0a79021139d8294692fc54df}{get\_deleter}}() noexcept -\/> Deleter\& \{} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00534}00534 \textcolor{keywordflow}{return} this-\/>d\_base::base();} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00535}00535 \}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00536}00536 } \DoxyCodeLine{\Hypertarget{memory_8h_source_l00537}\mbox{\hyperlink{classkblib_1_1cond__ptr_a87e9cbd850657dbe09a0dffe9b9752d8}{00537}} \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{auto} \mbox{\hyperlink{classkblib_1_1cond__ptr_a87e9cbd850657dbe09a0dffe9b9752d8}{get\_deleter}}() const noexcept -\/> const Deleter\& \{} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00538}00538 \textcolor{keywordflow}{return} this-\/>d\_base::base();} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00539}00539 \}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00540}00540 } \DoxyCodeLine{\Hypertarget{memory_8h_source_l00541}\mbox{\hyperlink{classkblib_1_1cond__ptr_a25d228af46d3ff9d4c84b783add5a760}{00541}} \textcolor{keyword}{auto} \mbox{\hyperlink{classkblib_1_1cond__ptr_a25d228af46d3ff9d4c84b783add5a760}{reset}}(T* p = \textcolor{keyword}{nullptr}, \textcolor{keywordtype}{bool} owner = \textcolor{keyword}{false},} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00542}00542 std::decay\_t del = \{\}) \& \textcolor{keyword}{noexcept} -\/> \textcolor{keywordtype}{void} \{} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00543}00543 \textcolor{keywordflow}{if} (owns\_) \{} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00544}00544 get\_deleter()(ptr\_);} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00545}00545 \}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00546}00546 ptr\_ = p;} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00547}00547 owns\_ = owner;} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00548}00548 get\_deleter() = std::move(del);} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00549}00549 \}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00550}\mbox{\hyperlink{classkblib_1_1cond__ptr_afc1f9b1d78436d3ca9b5f361ca12a1f4}{00550}} \textcolor{keyword}{auto} \mbox{\hyperlink{classkblib_1_1cond__ptr_afc1f9b1d78436d3ca9b5f361ca12a1f4}{reset}}(T* p, std::decay\_t del = \{\}) \& \textcolor{keyword}{noexcept} -\/> \textcolor{keywordtype}{void} \{} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00551}00551 \textcolor{keywordflow}{if} (owns\_) \{} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00552}00552 get\_deleter()(ptr\_);} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00553}00553 \}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00554}00554 ptr\_ = p;} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00555}00555 owns\_ = \textcolor{keyword}{false};} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00556}00556 get\_deleter() = std::move(del);} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00557}00557 \}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00558}00558 } \DoxyCodeLine{\Hypertarget{memory_8h_source_l00559}\mbox{\hyperlink{classkblib_1_1cond__ptr_a5eaa86091ee75715679fda3a7e034a94}{00559}} \textcolor{keyword}{auto} \mbox{\hyperlink{classkblib_1_1cond__ptr_a5eaa86091ee75715679fda3a7e034a94}{swap}}(\mbox{\hyperlink{classkblib_1_1cond__ptr}{cond\_ptr}}\& other) \textcolor{keyword}{noexcept}(} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00560}00560 \mbox{\hyperlink{structkblib_1_1fakestd_1_1is__nothrow__swappable}{fakestd::is\_nothrow\_swappable::value}}) -\/> \textcolor{keywordtype}{void} \{} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00561}00561 \textcolor{keyword}{using }\mbox{\hyperlink{namespacekblib_a4aadfdece3872e99551aa812ac3bac27}{std::swap}};} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00562}00562 \mbox{\hyperlink{namespacekblib_a4aadfdece3872e99551aa812ac3bac27}{swap}}(ptr\_, other.ptr\_);} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00563}00563 \mbox{\hyperlink{namespacekblib_a4aadfdece3872e99551aa812ac3bac27}{swap}}(owns\_, other.owns\_);} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00564}00564 \mbox{\hyperlink{namespacekblib_a4aadfdece3872e99551aa812ac3bac27}{swap}}(get\_deleter(), other.get\_deleter());} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00565}00565 \}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00566}00566 } \DoxyCodeLine{\Hypertarget{memory_8h_source_l00567}\mbox{\hyperlink{classkblib_1_1cond__ptr_a63ab9e5f1b4056f14fa8b56a6df9c2fa}{00567}} \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{auto} \mbox{\hyperlink{classkblib_1_1cond__ptr_a63ab9e5f1b4056f14fa8b56a6df9c2fa}{get}}() \& \textcolor{keyword}{noexcept} -\/> T* \{ \textcolor{keywordflow}{return} ptr\_; \}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00568}00568 } \DoxyCodeLine{\Hypertarget{memory_8h_source_l00569}\mbox{\hyperlink{classkblib_1_1cond__ptr_a9d978f8cc1cd2bf3dbd7ec799a0ce52b}{00569}} \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{auto} \mbox{\hyperlink{classkblib_1_1cond__ptr_a9d978f8cc1cd2bf3dbd7ec799a0ce52b}{get}}() const\& noexcept -\/> const T* \{ \textcolor{keywordflow}{return} ptr\_; \}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00570}00570 } \DoxyCodeLine{\Hypertarget{memory_8h_source_l00571}\mbox{\hyperlink{classkblib_1_1cond__ptr_a275f10e73f15a16e85c15d1a2c95cc07}{00571}} \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{explicit} \textcolor{keyword}{operator} bool() const noexcept \{ \textcolor{keywordflow}{return} ptr\_; \}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00572}00572 } \DoxyCodeLine{\Hypertarget{memory_8h_source_l00573}\mbox{\hyperlink{classkblib_1_1cond__ptr_a445411035d442cc40c988cbf87881ee5}{00573}} \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{auto} \mbox{\hyperlink{classkblib_1_1cond__ptr_a445411035d442cc40c988cbf87881ee5}{operator*}}() \& \textcolor{keyword}{noexcept} -\/> T\& \{ \textcolor{keywordflow}{return} *ptr\_; \}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00574}00574 } \DoxyCodeLine{\Hypertarget{memory_8h_source_l00575}\mbox{\hyperlink{classkblib_1_1cond__ptr_a2defdf9d5dcfd8c6438d657beedc6a67}{00575}} \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{auto} \mbox{\hyperlink{classkblib_1_1cond__ptr_a2defdf9d5dcfd8c6438d657beedc6a67}{operator*}}() const\& noexcept -\/> const T\& \{} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00576}00576 \textcolor{keywordflow}{return} *ptr\_;} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00577}00577 \}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00578}00578 } \DoxyCodeLine{\Hypertarget{memory_8h_source_l00579}\mbox{\hyperlink{classkblib_1_1cond__ptr_a2f1047a357e163499f526c22d2284f15}{00579}} \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{auto} \mbox{\hyperlink{classkblib_1_1cond__ptr_a2f1047a357e163499f526c22d2284f15}{operator-\/>}}() \& \textcolor{keyword}{noexcept} -\/> T* \{ \textcolor{keywordflow}{return} ptr\_; \}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00580}00580 } \DoxyCodeLine{\Hypertarget{memory_8h_source_l00581}\mbox{\hyperlink{classkblib_1_1cond__ptr_ac19a5760b889244462fe72579cf23789}{00581}} \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{auto} \mbox{\hyperlink{classkblib_1_1cond__ptr_ac19a5760b889244462fe72579cf23789}{operator-\/>}}() const\& noexcept -\/> const T* \{} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00582}00582 \textcolor{keywordflow}{return} ptr\_;} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00583}00583 \}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00584}00584 } \DoxyCodeLine{\Hypertarget{memory_8h_source_l00585}\mbox{\hyperlink{classkblib_1_1cond__ptr_af61e5b452edde39ca5d0cdde94fd65ea}{00585}} \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{friend} \textcolor{keyword}{constexpr} \textcolor{keyword}{auto} \mbox{\hyperlink{classkblib_1_1cond__ptr_af61e5b452edde39ca5d0cdde94fd65ea}{operator==}}(} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00586}00586 \textcolor{keyword}{const} \mbox{\hyperlink{classkblib_1_1cond__ptr}{cond\_ptr}}\& lhs, \textcolor{keyword}{const} \mbox{\hyperlink{classkblib_1_1cond__ptr}{cond\_ptr}}\& rhs) \textcolor{keyword}{noexcept} -\/> \textcolor{keywordtype}{bool} \{} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00587}00587 \textcolor{keywordflow}{return} lhs.ptr\_ == rhs.ptr\_;} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00588}00588 \}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00589}00589 } \DoxyCodeLine{\Hypertarget{memory_8h_source_l00590}\mbox{\hyperlink{classkblib_1_1cond__ptr_a92b1d18c8db327093cb7978c80a2a00a}{00590}} \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{friend} \textcolor{keyword}{constexpr} \textcolor{keyword}{auto} \mbox{\hyperlink{classkblib_1_1cond__ptr_a92b1d18c8db327093cb7978c80a2a00a}{operator==}}(} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00591}00591 \textcolor{keyword}{const} \mbox{\hyperlink{classkblib_1_1cond__ptr_a4df32829014a485bd76ec1398454161a}{unique}}\& lhs, \textcolor{keyword}{const} \mbox{\hyperlink{classkblib_1_1cond__ptr}{cond\_ptr}}\& rhs) \textcolor{keyword}{noexcept} -\/> \textcolor{keywordtype}{bool} \{} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00592}00592 \textcolor{keywordflow}{return} lhs.get() == rhs.ptr\_;} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00593}00593 \}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00594}00594 } \DoxyCodeLine{\Hypertarget{memory_8h_source_l00595}\mbox{\hyperlink{classkblib_1_1cond__ptr_ae57a614a50b0c04e6958395ef8898e25}{00595}} \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{friend} \textcolor{keyword}{constexpr} \textcolor{keyword}{auto} \mbox{\hyperlink{classkblib_1_1cond__ptr_ae57a614a50b0c04e6958395ef8898e25}{operator==}}(\textcolor{keyword}{const} \mbox{\hyperlink{classkblib_1_1cond__ptr}{cond\_ptr}}\& lhs,} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00596}00596 \textcolor{keyword}{const} \mbox{\hyperlink{classkblib_1_1cond__ptr_a4df32829014a485bd76ec1398454161a}{unique}}\& rhs) \textcolor{keyword}{noexcept}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00597}00597 -\/> \textcolor{keywordtype}{bool} \{} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00598}00598 \textcolor{keywordflow}{return} lhs.ptr\_ == rhs.get();} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00599}00599 \}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00600}00600 } \DoxyCodeLine{\Hypertarget{memory_8h_source_l00601}00601 \textcolor{keyword}{private}:} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00602}00602 T* ptr\_ = \textcolor{keyword}{nullptr};} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00603}00603 \textcolor{keywordtype}{bool} owns\_ = \textcolor{keyword}{false};} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00604}00604 \};} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00605}00605 } \DoxyCodeLine{\Hypertarget{memory_8h_source_l00606}00606 \textcolor{keyword}{template} <\textcolor{keyword}{typename} T, \textcolor{keyword}{typename} Deleter>} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00607}\mbox{\hyperlink{classkblib_1_1cond__ptr_3_01_t_0f_0e_00_01_deleter_01_4}{00607}} \textcolor{keyword}{class }\mbox{\hyperlink{classkblib_1_1cond__ptr}{cond\_ptr}} : \textcolor{keyword}{private} \mbox{\hyperlink{structkblib_1_1detail__memory_1_1as__base__class}{detail\_memory::as\_base\_class}} \{} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00608}00608 \textcolor{keyword}{using }\mbox{\hyperlink{structkblib_1_1detail__memory_1_1as__base__class}{d\_base}} = \mbox{\hyperlink{structkblib_1_1detail__memory_1_1as__base__class}{detail\_memory::as\_base\_class}};} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00609}00609 } \DoxyCodeLine{\Hypertarget{memory_8h_source_l00610}00610 \textcolor{keyword}{public}:} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00611}\mbox{\hyperlink{classkblib_1_1cond__ptr_3_01_t_0f_0e_00_01_deleter_01_4_a48c12083d8301dad80a1f1644c427841}{00611}} \textcolor{keyword}{using }\mbox{\hyperlink{classkblib_1_1cond__ptr_3_01_t_0f_0e_00_01_deleter_01_4_a48c12083d8301dad80a1f1644c427841}{pointer}} = \mbox{\hyperlink{namespacekblib_1_1detail__memory_a9cb8ba19f19eee413f3cb3a221bb3a60}{detail\_memory::filter\_deleter\_pointer\_t}};} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00612}\mbox{\hyperlink{classkblib_1_1cond__ptr_3_01_t_0f_0e_00_01_deleter_01_4_a9bcd4894e8a1c90a2e3dddf1d7903c90}{00612}} \textcolor{keyword}{using }\mbox{\hyperlink{classkblib_1_1cond__ptr_3_01_t_0f_0e_00_01_deleter_01_4_a9bcd4894e8a1c90a2e3dddf1d7903c90}{element\_type}} = T;} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00613}\mbox{\hyperlink{classkblib_1_1cond__ptr_3_01_t_0f_0e_00_01_deleter_01_4_a3150c6330dbd2ac80a4d30864c67d7a4}{00613}} \textcolor{keyword}{using }\mbox{\hyperlink{classkblib_1_1cond__ptr_3_01_t_0f_0e_00_01_deleter_01_4_a3150c6330dbd2ac80a4d30864c67d7a4}{deleter\_type}} = Deleter;} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00614}00614 } \DoxyCodeLine{\Hypertarget{memory_8h_source_l00615}00615 \textcolor{preprocessor}{\#if 0}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00616}00616 \textcolor{keyword}{static\_assert}(std::is\_nothrow\_invocable::value,} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00617}00617 \textcolor{stringliteral}{"{}cond\_ptr requires that deleter not throw exceptions."{}});} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00618}00618 \textcolor{preprocessor}{\#endif}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00619}00619 } \DoxyCodeLine{\Hypertarget{memory_8h_source_l00620}\mbox{\hyperlink{classkblib_1_1cond__ptr_3_01_t_0f_0e_00_01_deleter_01_4_a7b455396685d4d6c8ee6095af7defe7d}{00620}} \textcolor{keyword}{using }\mbox{\hyperlink{classkblib_1_1cond__ptr_3_01_t_0f_0e_00_01_deleter_01_4_a7b455396685d4d6c8ee6095af7defe7d}{unique}} = std::unique\_ptr;} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00621}00621 } \DoxyCodeLine{\Hypertarget{memory_8h_source_l00622}\mbox{\hyperlink{classkblib_1_1cond__ptr_3_01_t_0f_0e_00_01_deleter_01_4_a6dd759ef278c5bd1361b187d612da8b5}{00622}} \mbox{\hyperlink{classkblib_1_1cond__ptr_3_01_t_0f_0e_00_01_deleter_01_4_a6dd759ef278c5bd1361b187d612da8b5}{cond\_ptr}}() noexcept = default;} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00623}\mbox{\hyperlink{classkblib_1_1cond__ptr_3_01_t_0f_0e_00_01_deleter_01_4_af36f8d74ab016b573fa7a36a53bac483}{00623}} \mbox{\hyperlink{classkblib_1_1cond__ptr}{cond\_ptr}}(\mbox{\hyperlink{namespacestd}{std}}::nullptr\_t) noexcept \{\}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00624}00624 } \DoxyCodeLine{\Hypertarget{memory_8h_source_l00625}\mbox{\hyperlink{classkblib_1_1cond__ptr_3_01_t_0f_0e_00_01_deleter_01_4_aedbffcbfcd8e57960dc26610a10ab517}{00625}} \textcolor{keyword}{explicit} \mbox{\hyperlink{classkblib_1_1cond__ptr_3_01_t_0f_0e_00_01_deleter_01_4_aedbffcbfcd8e57960dc26610a10ab517}{cond\_ptr}}(T* p, \textcolor{keywordtype}{bool} owner = \textcolor{keyword}{false},} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00626}00626 std::decay\_t del = \{\}) \textcolor{keyword}{noexcept}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00627}00627 : d\_base\{std::move(del)\}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00628}00628 , ptr\_(p)} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00629}00629 , owns\_(owner) \{\}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00630}\mbox{\hyperlink{classkblib_1_1cond__ptr_3_01_t_0f_0e_00_01_deleter_01_4_a373148c69e166f1e92e8bbbf05c620a6}{00630}} \textcolor{keyword}{explicit} \mbox{\hyperlink{classkblib_1_1cond__ptr_3_01_t_0f_0e_00_01_deleter_01_4_a373148c69e166f1e92e8bbbf05c620a6}{cond\_ptr}}(T* p, std::decay\_t del) noexcept} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00631}00631 : \mbox{\hyperlink{structkblib_1_1detail__memory_1_1as__base__class}{d\_base}}\{std::move(del)\}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00632}00632 , ptr\_(p) \{\}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00633}00633 } \DoxyCodeLine{\Hypertarget{memory_8h_source_l00634}\mbox{\hyperlink{classkblib_1_1cond__ptr_3_01_t_0f_0e_00_01_deleter_01_4_a7ae8e77f270a532e24a9ef5ce461e46a}{00634}} \mbox{\hyperlink{classkblib_1_1cond__ptr_3_01_t_0f_0e_00_01_deleter_01_4_a7ae8e77f270a532e24a9ef5ce461e46a}{cond\_ptr}}(\mbox{\hyperlink{classkblib_1_1cond__ptr_3_01_t_0f_0e_00_01_deleter_01_4_a7b455396685d4d6c8ee6095af7defe7d}{unique}}\&\& p) noexcept} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00635}00635 : \mbox{\hyperlink{structkblib_1_1detail__memory_1_1as__base__class}{d\_base}}\{p.get\_deleter()\}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00636}00636 , ptr\_(p.release())} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00637}00637 , owns\_(ptr\_) \{\}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00638}00638 } \DoxyCodeLine{\Hypertarget{memory_8h_source_l00639}\mbox{\hyperlink{classkblib_1_1cond__ptr_3_01_t_0f_0e_00_01_deleter_01_4_ae93e3c7b77843a757d0572b8d9c67a19}{00639}} \mbox{\hyperlink{classkblib_1_1cond__ptr_3_01_t_0f_0e_00_01_deleter_01_4_ae93e3c7b77843a757d0572b8d9c67a19}{cond\_ptr}}(\textcolor{keyword}{const} \mbox{\hyperlink{classkblib_1_1cond__ptr}{cond\_ptr}}\& other) = \textcolor{keyword}{delete};} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00640}00640 \textcolor{comment}{// cond\_ptr(const cond\_ptr\& other) noexcept}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00641}00641 \textcolor{comment}{// : d\_base\{other.get\_deleter()\}, ptr\_(other.ptr\_) \{\}}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00642}\mbox{\hyperlink{classkblib_1_1cond__ptr_3_01_t_0f_0e_00_01_deleter_01_4_a01a89778be0fb9fa6c9a6847ecf6f250}{00642}} \mbox{\hyperlink{classkblib_1_1cond__ptr_3_01_t_0f_0e_00_01_deleter_01_4_a01a89778be0fb9fa6c9a6847ecf6f250}{cond\_ptr}}(\mbox{\hyperlink{classkblib_1_1cond__ptr}{cond\_ptr}}\&\& other) noexcept} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00643}00643 : \mbox{\hyperlink{structkblib_1_1detail__memory_1_1as__base__class}{d\_base}}\{other.get\_deleter()\}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00644}00644 , ptr\_(other.ptr\_)} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00645}00645 , owns\_(\mbox{\hyperlink{namespacekblib_a0c3f29dc7d19ffe01f977ce294ee537a}{std::exchange}}(other.owns\_, \textcolor{keyword}{false})) \{\}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00646}00646 } \DoxyCodeLine{\Hypertarget{memory_8h_source_l00647}\mbox{\hyperlink{classkblib_1_1cond__ptr_3_01_t_0f_0e_00_01_deleter_01_4_acdfd0da37245fc27491a9f86419fd42d}{00647}} \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{static} \textcolor{keyword}{auto} \mbox{\hyperlink{classkblib_1_1cond__ptr_3_01_t_0f_0e_00_01_deleter_01_4_acdfd0da37245fc27491a9f86419fd42d}{adopt}}(T* p) \textcolor{keyword}{noexcept} -\/> \mbox{\hyperlink{classkblib_1_1cond__ptr}{cond\_ptr}} \{} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00648}00648 \textcolor{keywordflow}{return} \{p, \textcolor{keyword}{true}\};} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00649}00649 \}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00650}\mbox{\hyperlink{classkblib_1_1cond__ptr_3_01_t_0f_0e_00_01_deleter_01_4_a0f8eb4b08447bd98c3c61cc2f2063e98}{00650}} \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{static} \textcolor{keyword}{auto} \mbox{\hyperlink{classkblib_1_1cond__ptr_3_01_t_0f_0e_00_01_deleter_01_4_a0f8eb4b08447bd98c3c61cc2f2063e98}{adopt}}(T* p, \mbox{\hyperlink{classkblib_1_1cond__ptr_3_01_t_0f_0e_00_01_deleter_01_4_a3150c6330dbd2ac80a4d30864c67d7a4}{deleter\_type}} del) \textcolor{keyword}{noexcept}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00651}00651 -\/> \mbox{\hyperlink{classkblib_1_1cond__ptr}{cond\_ptr}} \{} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00652}00652 \textcolor{keywordflow}{return} \{p, \textcolor{keyword}{true}, del\};} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00653}00653 \}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00654}00654 } \DoxyCodeLine{\Hypertarget{memory_8h_source_l00655}\mbox{\hyperlink{classkblib_1_1cond__ptr_3_01_t_0f_0e_00_01_deleter_01_4_afc4c77168bfb4d8b48c6cf4a34249250}{00655}} \textcolor{keyword}{auto} \mbox{\hyperlink{classkblib_1_1cond__ptr_3_01_t_0f_0e_00_01_deleter_01_4_afc4c77168bfb4d8b48c6cf4a34249250}{operator=}}(\textcolor{keyword}{const} \mbox{\hyperlink{classkblib_1_1cond__ptr}{cond\_ptr}}\& rhs) \& -\/> \mbox{\hyperlink{classkblib_1_1cond__ptr}{cond\_ptr}}\& = \textcolor{keyword}{delete};} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00656}00656 \textcolor{comment}{// auto operator=(const cond\_ptr\& rhs) \& noexcept -\/> cond\_ptr\& \{}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00657}00657 \textcolor{comment}{// if (owns\_) \{}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00658}00658 \textcolor{comment}{// get\_deleter()(ptr\_);}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00659}00659 \textcolor{comment}{// \}}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00660}00660 \textcolor{comment}{// owns\_ = false;}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00661}00661 \textcolor{comment}{// ptr\_ = rhs.release();}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00662}00662 \textcolor{comment}{// return *this;}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00663}00663 \textcolor{comment}{// \}}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00664}\mbox{\hyperlink{classkblib_1_1cond__ptr_3_01_t_0f_0e_00_01_deleter_01_4_a7355204599ce0942ac209cd63e8c8f5d}{00664}} \textcolor{keyword}{auto} \mbox{\hyperlink{classkblib_1_1cond__ptr_3_01_t_0f_0e_00_01_deleter_01_4_a7355204599ce0942ac209cd63e8c8f5d}{operator=}}(\mbox{\hyperlink{classkblib_1_1cond__ptr}{cond\_ptr}}\&\& rhs) \& \textcolor{keyword}{noexcept} -\/> \mbox{\hyperlink{classkblib_1_1cond__ptr}{cond\_ptr}}\& \{} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00665}00665 \textcolor{keywordflow}{if} (owns\_) \{} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00666}00666 get\_deleter()(ptr\_);} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00667}00667 \}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00668}00668 owns\_ = rhs.\mbox{\hyperlink{classkblib_1_1cond__ptr_a518feab723272e3a07bfe33c7d1ac69a}{owns}}();} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00669}00669 ptr\_ = rhs.release();} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00670}00670 \textcolor{keywordflow}{return} *\textcolor{keyword}{this};} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00671}00671 \}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00672}\mbox{\hyperlink{classkblib_1_1cond__ptr_3_01_t_0f_0e_00_01_deleter_01_4_a15595f4205ce4f305d1fe5fb5e58b974}{00672}} \textcolor{keyword}{auto} \mbox{\hyperlink{classkblib_1_1cond__ptr_3_01_t_0f_0e_00_01_deleter_01_4_a15595f4205ce4f305d1fe5fb5e58b974}{operator=}}(\mbox{\hyperlink{classkblib_1_1cond__ptr_3_01_t_0f_0e_00_01_deleter_01_4_a7b455396685d4d6c8ee6095af7defe7d}{unique}}\&\& rhs) -\/> \mbox{\hyperlink{classkblib_1_1cond__ptr}{cond\_ptr}}\& \{} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00673}00673 ptr\_ = rhs.\mbox{\hyperlink{classkblib_1_1cond__ptr_a44a71791e46c1c3a0539116399ea602f}{release}}();} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00674}00674 owns\_ = bool(ptr\_);} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00675}00675 get\_deleter() = std::move(rhs.get\_deleter());} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00676}00676 \textcolor{keywordflow}{return} *\textcolor{keyword}{this};} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00677}00677 \}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00678}00678 } \DoxyCodeLine{\Hypertarget{memory_8h_source_l00689}\mbox{\hyperlink{classkblib_1_1cond__ptr_3_01_t_0f_0e_00_01_deleter_01_4_a91d8990a847e41065015815da307d208}{00689}} \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{auto} \mbox{\hyperlink{classkblib_1_1cond__ptr_3_01_t_0f_0e_00_01_deleter_01_4_a91d8990a847e41065015815da307d208}{to\_unique}}() \&\& \textcolor{keyword}{noexcept} -\/> \mbox{\hyperlink{classkblib_1_1cond__ptr_3_01_t_0f_0e_00_01_deleter_01_4_a7b455396685d4d6c8ee6095af7defe7d}{unique}} \{} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00690}00690 \textcolor{keywordflow}{if} (owns\_) \{} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00691}00691 \textcolor{keywordflow}{return} \{release(), get\_deleter()\};} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00692}00692 \} \textcolor{keywordflow}{else} \{} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00693}00693 \textcolor{keywordflow}{return} \textcolor{keyword}{nullptr};} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00694}00694 \}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00695}00695 \}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00696}00696 } \DoxyCodeLine{\Hypertarget{memory_8h_source_l00697}\mbox{\hyperlink{classkblib_1_1cond__ptr_3_01_t_0f_0e_00_01_deleter_01_4_acf0ff1f4067129b135dfb63f1416feb1}{00697}} \textcolor{keyword}{explicit} \textcolor{keyword}{operator} \mbox{\hyperlink{classkblib_1_1cond__ptr_3_01_t_0f_0e_00_01_deleter_01_4_a7b455396685d4d6c8ee6095af7defe7d}{unique}}() \&\& \textcolor{keyword}{noexcept} \{} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00698}00698 \textcolor{keywordflow}{return} std::move(*this).to\_unique();} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00699}00699 \}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00700}00700 } \DoxyCodeLine{\Hypertarget{memory_8h_source_l00701}\mbox{\hyperlink{classkblib_1_1cond__ptr_3_01_t_0f_0e_00_01_deleter_01_4_a7777ea471605666bd375dac4377615c2}{00701}} \mbox{\hyperlink{classkblib_1_1cond__ptr_3_01_t_0f_0e_00_01_deleter_01_4_a7777ea471605666bd375dac4377615c2}{\string~cond\_ptr}}() noexcept \{} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00702}00702 \textcolor{keywordflow}{if} (owns\_) \{} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00703}00703 get\_deleter()(ptr\_);} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00704}00704 \}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00705}00705 \}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00706}00706 } \DoxyCodeLine{\Hypertarget{memory_8h_source_l00707}\mbox{\hyperlink{classkblib_1_1cond__ptr_3_01_t_0f_0e_00_01_deleter_01_4_ac8406b39f6fafb27ae7e275bf327b19d}{00707}} \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{auto} \mbox{\hyperlink{classkblib_1_1cond__ptr_3_01_t_0f_0e_00_01_deleter_01_4_ac8406b39f6fafb27ae7e275bf327b19d}{weak}}() const\& noexcept -\/> \mbox{\hyperlink{classkblib_1_1cond__ptr}{cond\_ptr}} \{} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00708}00708 \textcolor{keywordflow}{return} \mbox{\hyperlink{classkblib_1_1cond__ptr}{cond\_ptr}}\{ptr\_, \textcolor{keyword}{false}\};} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00709}00709 \}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00710}00710 } \DoxyCodeLine{\Hypertarget{memory_8h_source_l00711}\mbox{\hyperlink{classkblib_1_1cond__ptr_3_01_t_0f_0e_00_01_deleter_01_4_af611c691eddf7ca679f3b7c00ab4601f}{00711}} \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{auto} \mbox{\hyperlink{classkblib_1_1cond__ptr_3_01_t_0f_0e_00_01_deleter_01_4_af611c691eddf7ca679f3b7c00ab4601f}{owns}}() const noexcept -\/> \textcolor{keywordtype}{bool} \{ \textcolor{keywordflow}{return} owns\_; \}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00712}\mbox{\hyperlink{classkblib_1_1cond__ptr_3_01_t_0f_0e_00_01_deleter_01_4_a0454f4b8040139139dbe7373772a170e}{00712}} \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{auto} \mbox{\hyperlink{classkblib_1_1cond__ptr_3_01_t_0f_0e_00_01_deleter_01_4_a0454f4b8040139139dbe7373772a170e}{release}}() \& \textcolor{keyword}{noexcept} -\/> T* \{} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00713}00713 owns\_ = \textcolor{keyword}{false};} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00714}00714 \textcolor{keywordflow}{return} \mbox{\hyperlink{namespacekblib_a0c3f29dc7d19ffe01f977ce294ee537a}{std::exchange}}(ptr\_, \textcolor{keyword}{nullptr});} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00715}00715 \}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00716}00716 } \DoxyCodeLine{\Hypertarget{memory_8h_source_l00717}\mbox{\hyperlink{classkblib_1_1cond__ptr_3_01_t_0f_0e_00_01_deleter_01_4_a59b64b2b7531650761a28aaaa017fa00}{00717}} \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{auto} \mbox{\hyperlink{classkblib_1_1cond__ptr_3_01_t_0f_0e_00_01_deleter_01_4_a59b64b2b7531650761a28aaaa017fa00}{get\_deleter}}() noexcept -\/> Deleter\& \{ \textcolor{keywordflow}{return} *\textcolor{keyword}{this}; \}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00718}00718 } \DoxyCodeLine{\Hypertarget{memory_8h_source_l00719}\mbox{\hyperlink{classkblib_1_1cond__ptr_3_01_t_0f_0e_00_01_deleter_01_4_a01eace688378fed665329906cee1ef94}{00719}} \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{auto} \mbox{\hyperlink{classkblib_1_1cond__ptr_3_01_t_0f_0e_00_01_deleter_01_4_a01eace688378fed665329906cee1ef94}{get\_deleter}}() const noexcept -\/> const Deleter\& \{} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00720}00720 \textcolor{keywordflow}{return} *\textcolor{keyword}{this};} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00721}00721 \}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00722}00722 } \DoxyCodeLine{\Hypertarget{memory_8h_source_l00723}\mbox{\hyperlink{classkblib_1_1cond__ptr_3_01_t_0f_0e_00_01_deleter_01_4_a9d845b09ab52c539f265aa99c9913e18}{00723}} \textcolor{keyword}{auto} \mbox{\hyperlink{classkblib_1_1cond__ptr_3_01_t_0f_0e_00_01_deleter_01_4_a9d845b09ab52c539f265aa99c9913e18}{reset}}(T* p = \textcolor{keyword}{nullptr}, \textcolor{keywordtype}{bool} owner = \textcolor{keyword}{false},} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00724}00724 std::decay\_t del = \{\}) \& \textcolor{keyword}{noexcept} -\/> \textcolor{keywordtype}{void} \{} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00725}00725 \textcolor{keywordflow}{if} (owns\_) \{} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00726}00726 get\_deleter()(ptr\_);} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00727}00727 \}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00728}00728 ptr\_ = p;} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00729}00729 owns\_ = owner;} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00730}00730 get\_deleter() = std::move(del);} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00731}00731 \}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00732}\mbox{\hyperlink{classkblib_1_1cond__ptr_3_01_t_0f_0e_00_01_deleter_01_4_ad51a29b7255981c5f093197dbbdaf6a4}{00732}} \textcolor{keyword}{auto} \mbox{\hyperlink{classkblib_1_1cond__ptr_3_01_t_0f_0e_00_01_deleter_01_4_ad51a29b7255981c5f093197dbbdaf6a4}{reset}}(T* p, std::decay\_t del = \{\}) \& \textcolor{keyword}{noexcept} -\/> \textcolor{keywordtype}{void} \{} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00733}00733 \textcolor{keywordflow}{if} (owns\_) \{} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00734}00734 get\_deleter()(ptr\_);} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00735}00735 \}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00736}00736 ptr\_ = p;} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00737}00737 owns\_ = \textcolor{keyword}{false};} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00738}00738 get\_deleter() = std::move(del);} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00739}00739 \}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00740}00740 } \DoxyCodeLine{\Hypertarget{memory_8h_source_l00741}\mbox{\hyperlink{classkblib_1_1cond__ptr_3_01_t_0f_0e_00_01_deleter_01_4_a29e9a6c77df27230b4f1c26ceda675ab}{00741}} \textcolor{keyword}{auto} \mbox{\hyperlink{classkblib_1_1cond__ptr_3_01_t_0f_0e_00_01_deleter_01_4_a29e9a6c77df27230b4f1c26ceda675ab}{swap}}(\mbox{\hyperlink{classkblib_1_1cond__ptr}{cond\_ptr}}\& other) -\/> \textcolor{keywordtype}{void} \{} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00742}00742 \mbox{\hyperlink{namespacekblib_a4aadfdece3872e99551aa812ac3bac27}{std::swap}}(ptr\_, other.ptr\_);} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00743}00743 \mbox{\hyperlink{namespacekblib_a4aadfdece3872e99551aa812ac3bac27}{std::swap}}(owns\_, other.owns\_);} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00744}00744 \mbox{\hyperlink{namespacekblib_a4aadfdece3872e99551aa812ac3bac27}{std::swap}}(get\_deleter(), other.get\_deleter());} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00745}00745 \}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00746}00746 } \DoxyCodeLine{\Hypertarget{memory_8h_source_l00747}\mbox{\hyperlink{classkblib_1_1cond__ptr_3_01_t_0f_0e_00_01_deleter_01_4_a827a1eb96b8ce18d8d42386d2ca4bfda}{00747}} \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{auto} \mbox{\hyperlink{classkblib_1_1cond__ptr_3_01_t_0f_0e_00_01_deleter_01_4_a827a1eb96b8ce18d8d42386d2ca4bfda}{get}}() \& \textcolor{keyword}{noexcept} -\/> T* \{ \textcolor{keywordflow}{return} ptr\_; \}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00748}00748 } \DoxyCodeLine{\Hypertarget{memory_8h_source_l00749}\mbox{\hyperlink{classkblib_1_1cond__ptr_3_01_t_0f_0e_00_01_deleter_01_4_ae6cba8b0ca1bd342dd6d9f59c128ea6f}{00749}} \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{auto} \mbox{\hyperlink{classkblib_1_1cond__ptr_3_01_t_0f_0e_00_01_deleter_01_4_ae6cba8b0ca1bd342dd6d9f59c128ea6f}{get}}() const\& noexcept -\/> const T* \{ \textcolor{keywordflow}{return} ptr\_; \}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00750}00750 } \DoxyCodeLine{\Hypertarget{memory_8h_source_l00751}\mbox{\hyperlink{classkblib_1_1cond__ptr_3_01_t_0f_0e_00_01_deleter_01_4_acc70a9c63f4c91157a21d12a4fcdbdab}{00751}} \textcolor{keyword}{explicit} \textcolor{keyword}{operator} bool() const noexcept \{ \textcolor{keywordflow}{return} ptr\_; \}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00752}00752 } \DoxyCodeLine{\Hypertarget{memory_8h_source_l00753}\mbox{\hyperlink{classkblib_1_1cond__ptr_3_01_t_0f_0e_00_01_deleter_01_4_a6438356c37ebd1a4e025fbe66ab86fcd}{00753}} \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} T\& \mbox{\hyperlink{classkblib_1_1cond__ptr_3_01_t_0f_0e_00_01_deleter_01_4_a6438356c37ebd1a4e025fbe66ab86fcd}{operator[]}}(std::size\_t index) \& \textcolor{keyword}{noexcept} \{} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00754}00754 \textcolor{keywordflow}{return} ptr\_[index];} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00755}00755 \}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00756}00756 } \DoxyCodeLine{\Hypertarget{memory_8h_source_l00757}\mbox{\hyperlink{classkblib_1_1cond__ptr_3_01_t_0f_0e_00_01_deleter_01_4_a5a0911ca2209ae811fb2303cee71ade1}{00757}} \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{const} T\& \mbox{\hyperlink{classkblib_1_1cond__ptr_3_01_t_0f_0e_00_01_deleter_01_4_a5a0911ca2209ae811fb2303cee71ade1}{operator[]}}(std::size\_t index) \textcolor{keyword}{const}\& \textcolor{keyword}{noexcept} \{} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00758}00758 \textcolor{keywordflow}{return} ptr\_[index];} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00759}00759 \}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00760}00760 } \DoxyCodeLine{\Hypertarget{memory_8h_source_l00761}\mbox{\hyperlink{classkblib_1_1cond__ptr_3_01_t_0f_0e_00_01_deleter_01_4_af61e5b452edde39ca5d0cdde94fd65ea}{00761}} \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{friend} \textcolor{keyword}{constexpr} \textcolor{keyword}{auto} \mbox{\hyperlink{classkblib_1_1cond__ptr_3_01_t_0f_0e_00_01_deleter_01_4_af61e5b452edde39ca5d0cdde94fd65ea}{operator==}}(} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00762}00762 \textcolor{keyword}{const} \mbox{\hyperlink{classkblib_1_1cond__ptr}{cond\_ptr}}\& lhs, \textcolor{keyword}{const} \mbox{\hyperlink{classkblib_1_1cond__ptr}{cond\_ptr}}\& rhs) \textcolor{keyword}{noexcept} -\/> \textcolor{keywordtype}{bool} \{} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00763}00763 \textcolor{keywordflow}{return} lhs.ptr\_ == rhs.ptr\_;} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00764}00764 \}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00765}00765 } \DoxyCodeLine{\Hypertarget{memory_8h_source_l00766}\mbox{\hyperlink{classkblib_1_1cond__ptr_3_01_t_0f_0e_00_01_deleter_01_4_a92b1d18c8db327093cb7978c80a2a00a}{00766}} \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{friend} \textcolor{keyword}{constexpr} \textcolor{keyword}{auto} \mbox{\hyperlink{classkblib_1_1cond__ptr_3_01_t_0f_0e_00_01_deleter_01_4_a92b1d18c8db327093cb7978c80a2a00a}{operator==}}(} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00767}00767 \textcolor{keyword}{const} \mbox{\hyperlink{classkblib_1_1cond__ptr_3_01_t_0f_0e_00_01_deleter_01_4_a7b455396685d4d6c8ee6095af7defe7d}{unique}}\& lhs, \textcolor{keyword}{const} \mbox{\hyperlink{classkblib_1_1cond__ptr}{cond\_ptr}}\& rhs) \textcolor{keyword}{noexcept} -\/> \textcolor{keywordtype}{bool} \{} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00768}00768 \textcolor{keywordflow}{return} lhs.get() == rhs.ptr\_;} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00769}00769 \}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00770}00770 } \DoxyCodeLine{\Hypertarget{memory_8h_source_l00771}\mbox{\hyperlink{classkblib_1_1cond__ptr_3_01_t_0f_0e_00_01_deleter_01_4_ae57a614a50b0c04e6958395ef8898e25}{00771}} \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{friend} \textcolor{keyword}{constexpr} \textcolor{keyword}{auto} \mbox{\hyperlink{classkblib_1_1cond__ptr_3_01_t_0f_0e_00_01_deleter_01_4_ae57a614a50b0c04e6958395ef8898e25}{operator==}}(\textcolor{keyword}{const} \mbox{\hyperlink{classkblib_1_1cond__ptr}{cond\_ptr}}\& lhs,} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00772}00772 \textcolor{keyword}{const} \mbox{\hyperlink{classkblib_1_1cond__ptr_3_01_t_0f_0e_00_01_deleter_01_4_a7b455396685d4d6c8ee6095af7defe7d}{unique}}\& rhs) \textcolor{keyword}{noexcept}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00773}00773 -\/> \textcolor{keywordtype}{bool} \{} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00774}00774 \textcolor{keywordflow}{return} lhs.ptr\_ == rhs.get();} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00775}00775 \}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00776}00776 } \DoxyCodeLine{\Hypertarget{memory_8h_source_l00777}00777 \textcolor{keyword}{private}:} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00778}00778 T* ptr\_ = \textcolor{keyword}{nullptr};} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00779}00779 \textcolor{keywordtype}{bool} owns\_ = \textcolor{keyword}{false};} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00780}00780 \};} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00781}00781 } \DoxyCodeLine{\Hypertarget{memory_8h_source_l00782}00782 \textcolor{keyword}{template} <\textcolor{keyword}{typename} T, \textcolor{keyword}{typename} Deleter>} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00783}\mbox{\hyperlink{namespacekblib_af2d860ddf535b7091b11fc07aabe472f}{00783}} \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{auto} \mbox{\hyperlink{namespacekblib_ab19e9968b3988d68b39eaf3b09342d6e}{make\_cond\_ptr}}(std::unique\_ptr\&\& arg) \textcolor{keyword}{noexcept}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00784}00784 -\/> \mbox{\hyperlink{classkblib_1_1cond__ptr}{cond\_ptr}} \{} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00785}00785 \textcolor{keywordflow}{return} \mbox{\hyperlink{classkblib_1_1cond__ptr}{cond\_ptr}}(std::move(arg));} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00786}00786 \}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00787}00787 } \DoxyCodeLine{\Hypertarget{memory_8h_source_l00788}00788 \textcolor{keyword}{template} <\textcolor{keyword}{typename} T>} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00789}\mbox{\hyperlink{namespacekblib_a52d62500a095e18991f3ad59dcc83327}{00789}} \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{auto} \mbox{\hyperlink{namespacekblib_ab19e9968b3988d68b39eaf3b09342d6e}{make\_cond\_ptr}}(T* arg, \textcolor{keywordtype}{bool} owner = \textcolor{keyword}{false}) noexcept} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00790}00790 -\/> \mbox{\hyperlink{classkblib_1_1cond__ptr}{cond\_ptr}} \{} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00791}00791 \textcolor{keywordflow}{return} \mbox{\hyperlink{classkblib_1_1cond__ptr}{cond\_ptr}}(arg, owner);} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00792}00792 \}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00793}00793 } \DoxyCodeLine{\Hypertarget{memory_8h_source_l00794}00794 \textcolor{keyword}{template} <\textcolor{keyword}{typename} T, \textcolor{keyword}{typename} Deleter>} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00795}\mbox{\hyperlink{namespacekblib_a6b20de5026ac934359d2cdc1d5426611}{00795}} \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{auto} \mbox{\hyperlink{namespacekblib_ab19e9968b3988d68b39eaf3b09342d6e}{make\_cond\_ptr}}(T* arg, Deleter del) \textcolor{keyword}{noexcept}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00796}00796 -\/> \mbox{\hyperlink{classkblib_1_1cond__ptr}{cond\_ptr}} \{} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00797}00797 \textcolor{keywordflow}{return} \mbox{\hyperlink{classkblib_1_1cond__ptr}{cond\_ptr}}(arg, del);} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00798}00798 \}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00799}00799 } \DoxyCodeLine{\Hypertarget{memory_8h_source_l00800}00800 \textcolor{keyword}{template} <\textcolor{keyword}{typename} T, \textcolor{keyword}{typename} Deleter>} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00801}\mbox{\hyperlink{namespacekblib_ab19e9968b3988d68b39eaf3b09342d6e}{00801}} \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{auto} \mbox{\hyperlink{namespacekblib_ab19e9968b3988d68b39eaf3b09342d6e}{make\_cond\_ptr}}(T* arg, \textcolor{keywordtype}{bool} owner, Deleter del) \textcolor{keyword}{noexcept}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00802}00802 -\/> \mbox{\hyperlink{classkblib_1_1cond__ptr}{cond\_ptr}} \{} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00803}00803 \textcolor{keywordflow}{return} \mbox{\hyperlink{classkblib_1_1cond__ptr}{cond\_ptr}}(arg, owner, del);} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00804}00804 \}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00805}00805 } \DoxyCodeLine{\Hypertarget{memory_8h_source_l00806}00806 \} \textcolor{comment}{// namespace KBLIB\_NS}} \DoxyCodeLine{\Hypertarget{memory_8h_source_l00807}00807 } \DoxyCodeLine{\Hypertarget{memory_8h_source_l00808}00808 \textcolor{preprocessor}{\#endif }\textcolor{comment}{// MEMORY\_H}} \end{DoxyCode}