\hypertarget{poly__obj_8h_source}{}\doxysection{poly\+\_\+obj.\+h}
\label{poly__obj_8h_source}\index{kblib/poly\_obj.h@{kblib/poly\_obj.h}}
\mbox{\hyperlink{poly__obj_8h}{Go to the documentation of this file.}}
\begin{DoxyCode}{0}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00001}00001 \textcolor{comment}{/* *****************************************************************************}}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00002}00002 \textcolor{comment}{ * kblib is a general utility library for C++14 and C++17, intended to provide}}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00003}00003 \textcolor{comment}{ * performant high-\/level abstractions and more expressive ways to do simple}}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00004}00004 \textcolor{comment}{ * things.}}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00005}00005 \textcolor{comment}{ *}}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00006}00006 \textcolor{comment}{ * Copyright (c) 2021 killerbee}}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00007}00007 \textcolor{comment}{ *}}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00008}00008 \textcolor{comment}{ * This program is free software: you can redistribute it and/or modify}}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00009}00009 \textcolor{comment}{ * it under the terms of the GNU General Public License as published by}}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00010}00010 \textcolor{comment}{ * the Free Software Foundation, either version 3 of the License, or}}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00011}00011 \textcolor{comment}{ * (at your option) any later version.}}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00012}00012 \textcolor{comment}{ *}}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00013}00013 \textcolor{comment}{ * This program is distributed in the hope that it will be useful,}}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00014}00014 \textcolor{comment}{ * but WITHOUT ANY WARRANTY; without even the implied warranty of}}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00015}00015 \textcolor{comment}{ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the}}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00016}00016 \textcolor{comment}{ * GNU General Public License for more details.}}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00017}00017 \textcolor{comment}{ *}}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00018}00018 \textcolor{comment}{ * You should have received a copy of the GNU General Public License}}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00019}00019 \textcolor{comment}{ * along with this program.  If not, see <https://www.gnu.org/licenses/>.}}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00020}00020 \textcolor{comment}{ * ****************************************************************************/}}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00021}00021 }
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00032}00032 \textcolor{preprocessor}{\#ifndef POLY\_OBJ\_H}}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00033}00033 \textcolor{preprocessor}{\#define POLY\_OBJ\_H}}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00034}00034 }
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00035}00035 \textcolor{preprocessor}{\#include "{}\mbox{\hyperlink{hash_8h}{hash.h}}"{}}}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00036}00036 \textcolor{preprocessor}{\#include "{}\mbox{\hyperlink{variant_8h}{variant.h}}"{}}}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00037}00037 }
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00038}00038 \textcolor{keyword}{namespace }\mbox{\hyperlink{tdecl_8h_a4b5c574c663a392148218cd4410fd7a1}{KBLIB\_NS}} \{}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00039}00039 }
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00040}\mbox{\hyperlink{namespacekblib_a2cc6d0e618d41f45deaaa5c6c357ed7a}{00040}} \textcolor{keyword}{enum class} \mbox{\hyperlink{namespacekblib_a2cc6d0e618d41f45deaaa5c6c357ed7a}{construct\_type}} : \textcolor{keywordtype}{unsigned} \{}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00041}00041    \mbox{\hyperlink{namespacekblib_a2cc6d0e618d41f45deaaa5c6c357ed7aa334c4a4c42fdb79d7ebc3e73b517e6f8}{none}} = 0,}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00042}00042    \mbox{\hyperlink{namespacekblib_a2cc6d0e618d41f45deaaa5c6c357ed7aa849f12a705c6dbc3ff5da992d47a9982}{copy\_only}} = 1,}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00043}00043    \mbox{\hyperlink{namespacekblib_a2cc6d0e618d41f45deaaa5c6c357ed7aa3734a903022249b3010be1897042568e}{move}} = 2,}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00044}00044    \mbox{\hyperlink{namespacekblib_a2cc6d0e618d41f45deaaa5c6c357ed7aaf6cb3e816496528d4187db53bc66567f}{both}} = 3,}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00045}00045    \mbox{\hyperlink{namespacekblib_a2cc6d0e618d41f45deaaa5c6c357ed7aa04d3c750404e3d492d5d7d920189aa52}{throw\_move}} = 4,}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00046}00046    \mbox{\hyperlink{namespacekblib_a2cc6d0e618d41f45deaaa5c6c357ed7aab009e0a1fa84b4e6e58f4ea7acba9712}{both\_throw}} = 5,}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00047}00047 \};}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00048}\mbox{\hyperlink{namespacekblib_a5027ae40714e0bac3fbc7498f9875783}{00048}} \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{constexpr} \textcolor{keyword}{auto} \mbox{\hyperlink{namespacekblib_a5027ae40714e0bac3fbc7498f9875783}{operator|}}(\mbox{\hyperlink{namespacekblib_a2cc6d0e618d41f45deaaa5c6c357ed7a}{construct\_type}} l,}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00049}00049                                          \mbox{\hyperlink{namespacekblib_a2cc6d0e618d41f45deaaa5c6c357ed7a}{construct\_type}} r) \textcolor{keyword}{noexcept}}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00050}00050     -\/> \mbox{\hyperlink{namespacekblib_a2cc6d0e618d41f45deaaa5c6c357ed7a}{construct\_type}} \{}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00051}00051    \textcolor{keywordflow}{return} \textcolor{keyword}{static\_cast<}\mbox{\hyperlink{namespacekblib_a2cc6d0e618d41f45deaaa5c6c357ed7a}{construct\_type}}\textcolor{keyword}{>}(\mbox{\hyperlink{namespacekblib_adceb810a61acaa78f10a700d1618aad7}{etoi}}(l) | \mbox{\hyperlink{namespacekblib_adceb810a61acaa78f10a700d1618aad7}{etoi}}(r));}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00052}00052 \}}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00053}00053 }
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00054}\mbox{\hyperlink{namespacekblib_abb6b875ecf3a38a03dcd0b15aca7a0ea}{00054}} \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{constexpr} \textcolor{keyword}{auto} \mbox{\hyperlink{namespacekblib_abb6b875ecf3a38a03dcd0b15aca7a0ea}{operator\&}}(\mbox{\hyperlink{namespacekblib_a2cc6d0e618d41f45deaaa5c6c357ed7a}{construct\_type}} l,}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00055}00055                                          \mbox{\hyperlink{namespacekblib_a2cc6d0e618d41f45deaaa5c6c357ed7a}{construct\_type}} r) \textcolor{keyword}{noexcept}}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00056}00056     -\/> \mbox{\hyperlink{namespacekblib_a2cc6d0e618d41f45deaaa5c6c357ed7a}{construct\_type}} \{}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00057}00057    \textcolor{keywordflow}{return} \textcolor{keyword}{static\_cast<}\mbox{\hyperlink{namespacekblib_a2cc6d0e618d41f45deaaa5c6c357ed7a}{construct\_type}}\textcolor{keyword}{>}(\mbox{\hyperlink{namespacekblib_adceb810a61acaa78f10a700d1618aad7}{etoi}}(l) \& \mbox{\hyperlink{namespacekblib_adceb810a61acaa78f10a700d1618aad7}{etoi}}(r));}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00058}00058 \}}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00059}00059 }
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00060}\mbox{\hyperlink{namespacekblib_ae2779c90b5c731d209e9cc1f555a18de}{00060}} \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{constexpr} \textcolor{keyword}{auto} \mbox{\hyperlink{namespacekblib_ae2779c90b5c731d209e9cc1f555a18de}{operator*}}(\mbox{\hyperlink{namespacekblib_a2cc6d0e618d41f45deaaa5c6c357ed7a}{construct\_type}} l, \textcolor{keywordtype}{bool} r) \textcolor{keyword}{noexcept}}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00061}00061     -\/> \mbox{\hyperlink{namespacekblib_a2cc6d0e618d41f45deaaa5c6c357ed7a}{construct\_type}} \{}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00062}00062    \textcolor{keywordflow}{return} r ? l : construct\_type::none;}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00063}00063 \}}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00064}00064 }
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00070}00070 \textcolor{keyword}{namespace }detail\_poly \{}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00071}00071 }
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00072}\mbox{\hyperlink{namespacekblib_1_1detail__poly_aa9dd6842a655495099bc36a29c947f3c}{00072}}    \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{constexpr} \textcolor{keyword}{auto} \mbox{\hyperlink{namespacekblib_1_1detail__poly_aa9dd6842a655495099bc36a29c947f3c}{copyable}}(\mbox{\hyperlink{namespacekblib_a2cc6d0e618d41f45deaaa5c6c357ed7a}{construct\_type}} type) \textcolor{keyword}{noexcept}}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00073}00073        -\/> \textcolor{keywordtype}{bool} \{}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00074}00074       \textcolor{keywordflow}{return} (type \& construct\_type::copy\_only) != construct\_type::none;}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00075}00075    \}}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00076}\mbox{\hyperlink{namespacekblib_1_1detail__poly_aa3f1e557e58498f440cfb3a47edc8e69}{00076}}    \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{constexpr} \textcolor{keyword}{auto} \mbox{\hyperlink{namespacekblib_1_1detail__poly_aa3f1e557e58498f440cfb3a47edc8e69}{movable}}(\mbox{\hyperlink{namespacekblib_a2cc6d0e618d41f45deaaa5c6c357ed7a}{construct\_type}} type) \textcolor{keyword}{noexcept}}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00077}00077        -\/> \textcolor{keywordtype}{bool} \{}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00078}00078       \textcolor{keywordflow}{return} (type \& construct\_type::move) != construct\_type::none;}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00079}00079    \}}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00080}\mbox{\hyperlink{namespacekblib_1_1detail__poly_ab9643d14f3057466208cd3c874114552}{00080}}    \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{constexpr} \textcolor{keyword}{auto} \mbox{\hyperlink{namespacekblib_1_1detail__poly_ab9643d14f3057466208cd3c874114552}{nothrow\_movable}}(\mbox{\hyperlink{namespacekblib_a2cc6d0e618d41f45deaaa5c6c357ed7a}{construct\_type}} type) \textcolor{keyword}{noexcept}}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00081}00081        -\/> \textcolor{keywordtype}{bool} \{}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00082}00082       \textcolor{keywordflow}{return} (type \& construct\_type::move) != construct\_type::none}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00083}00083              and (type \& construct\_type::throw\_move) == construct\_type::none;}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00084}00084    \}}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00085}00085 }
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00086}\mbox{\hyperlink{namespacekblib_1_1detail__poly_a2b36368b4dc8ff5498b7ae45839e47c5}{00086}}    \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{constexpr} \textcolor{keyword}{auto} \mbox{\hyperlink{namespacekblib_1_1detail__poly_a2b36368b4dc8ff5498b7ae45839e47c5}{make\_ctype}}(\textcolor{keywordtype}{bool} \mbox{\hyperlink{namespacekblib_1_1detail__poly_aa9dd6842a655495099bc36a29c947f3c}{copyable}}, \textcolor{keywordtype}{bool} \mbox{\hyperlink{namespacekblib_1_1detail__poly_aa3f1e557e58498f440cfb3a47edc8e69}{movable}},}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00087}00087                                              \textcolor{keywordtype}{bool} \mbox{\hyperlink{namespacekblib_1_1detail__poly_ab9643d14f3057466208cd3c874114552}{nothrow\_movable}})}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00088}00088        -\/> \mbox{\hyperlink{namespacekblib_a2cc6d0e618d41f45deaaa5c6c357ed7a}{construct\_type}} \{}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00089}00089       \textcolor{keywordflow}{if} (\mbox{\hyperlink{namespacekblib_1_1detail__poly_aa9dd6842a655495099bc36a29c947f3c}{copyable}}) \{}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00090}00090          \textcolor{keywordflow}{if} (not \mbox{\hyperlink{namespacekblib_1_1detail__poly_aa3f1e557e58498f440cfb3a47edc8e69}{movable}}) \{}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00091}00091             \textcolor{keywordflow}{return} construct\_type::copy\_only;}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00092}00092          \} \textcolor{keywordflow}{else} \textcolor{keywordflow}{if} (\mbox{\hyperlink{namespacekblib_1_1detail__poly_ab9643d14f3057466208cd3c874114552}{nothrow\_movable}}) \{}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00093}00093             \textcolor{keywordflow}{return} construct\_type::both;}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00094}00094          \} \textcolor{keywordflow}{else} \{}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00095}00095             \textcolor{keywordflow}{return} construct\_type::both\_throw;}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00096}00096          \}}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00097}00097       \} \textcolor{keywordflow}{else} \textcolor{keywordflow}{if} (\mbox{\hyperlink{namespacekblib_1_1detail__poly_aa3f1e557e58498f440cfb3a47edc8e69}{movable}}) \{}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00098}00098          \textcolor{keywordflow}{return} construct\_type::move;}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00099}00099       \} \textcolor{keywordflow}{else} \{}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00100}00100          \textcolor{keywordflow}{return} construct\_type::none;}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00101}00101       \}}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00102}00102    \}}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00103}00103 }
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00104}00104    \textcolor{keyword}{template} <construct\_type traits>}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00105}\mbox{\hyperlink{structkblib_1_1detail__poly_1_1construct__conditional}{00105}}    \textcolor{keyword}{struct }\mbox{\hyperlink{structkblib_1_1detail__poly_1_1construct__conditional}{construct\_conditional}};}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00106}00106 }
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00107}00107    \textcolor{keyword}{template} <>}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00108}\mbox{\hyperlink{structkblib_1_1detail__poly_1_1construct__conditional_3_01construct__type_1_1none_01_4}{00108}}    \textcolor{keyword}{struct }\mbox{\hyperlink{structkblib_1_1detail__poly_1_1construct__conditional}{construct\_conditional}}<\mbox{\hyperlink{namespacekblib_a2cc6d0e618d41f45deaaa5c6c357ed7a}{construct\_type}}::\mbox{\hyperlink{namespacekblib_a2cc6d0e618d41f45deaaa5c6c357ed7aa334c4a4c42fdb79d7ebc3e73b517e6f8}{none}}> \{}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00109}\mbox{\hyperlink{structkblib_1_1detail__poly_1_1construct__conditional_3_01construct__type_1_1none_01_4_ad35df961d2d3b184037bc74c86dfd895}{00109}}       \mbox{\hyperlink{structkblib_1_1detail__poly_1_1construct__conditional_3_01construct__type_1_1none_01_4_ad35df961d2d3b184037bc74c86dfd895}{construct\_conditional}}() noexcept = default;}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00110}\mbox{\hyperlink{structkblib_1_1detail__poly_1_1construct__conditional_3_01construct__type_1_1none_01_4_a79373ad6519ad484a5066f870a11cc03}{00110}}       \mbox{\hyperlink{structkblib_1_1detail__poly_1_1construct__conditional}{construct\_conditional}}(const \mbox{\hyperlink{structkblib_1_1detail__poly_1_1construct__conditional}{construct\_conditional}}\&) = delete;}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00111}\mbox{\hyperlink{structkblib_1_1detail__poly_1_1construct__conditional_3_01construct__type_1_1none_01_4_ae920794ac8391add8a340f7bd99e3669}{00111}}       \mbox{\hyperlink{structkblib_1_1detail__poly_1_1construct__conditional}{construct\_conditional}}(\mbox{\hyperlink{structkblib_1_1detail__poly_1_1construct__conditional}{construct\_conditional}}\&\&) = delete;}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00112}00112 }
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00113}\mbox{\hyperlink{structkblib_1_1detail__poly_1_1construct__conditional_3_01construct__type_1_1none_01_4_ad3932ad2c30d1bd1043c87eddbb93419}{00113}}       auto operator=(const \mbox{\hyperlink{structkblib_1_1detail__poly_1_1construct__conditional}{construct\_conditional}}\&)}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00114}00114           -\/> \mbox{\hyperlink{structkblib_1_1detail__poly_1_1construct__conditional}{construct\_conditional}}\& = default;}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00115}\mbox{\hyperlink{structkblib_1_1detail__poly_1_1construct__conditional_3_01construct__type_1_1none_01_4_a33a03d4649cbc9f01b1763241a947091}{00115}}       auto operator=(\mbox{\hyperlink{structkblib_1_1detail__poly_1_1construct__conditional}{construct\_conditional}}\&\&)}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00116}00116           -\/> \mbox{\hyperlink{structkblib_1_1detail__poly_1_1construct__conditional}{construct\_conditional}}\& = default;}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00117}\mbox{\hyperlink{structkblib_1_1detail__poly_1_1construct__conditional_3_01construct__type_1_1none_01_4_a27430d4f01c147b303efa61f83cca6f6}{00117}}       \string~\mbox{\hyperlink{structkblib_1_1detail__poly_1_1construct__conditional}{construct\_conditional}}() = default;}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00118}00118    \};}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00119}00119 }
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00120}00120    template <>}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00121}\mbox{\hyperlink{structkblib_1_1detail__poly_1_1construct__conditional_3_01construct__type_1_1copy__only_01_4}{00121}}    struct \mbox{\hyperlink{structkblib_1_1detail__poly_1_1construct__conditional}{construct\_conditional}}<\mbox{\hyperlink{namespacekblib_a2cc6d0e618d41f45deaaa5c6c357ed7a}{construct\_type}}::copy\_only> \{}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00122}\mbox{\hyperlink{structkblib_1_1detail__poly_1_1construct__conditional_3_01construct__type_1_1copy__only_01_4_aaf7232320da85b234fbd8c2e16b82444}{00122}}       \mbox{\hyperlink{structkblib_1_1detail__poly_1_1construct__conditional_3_01construct__type_1_1copy__only_01_4_aaf7232320da85b234fbd8c2e16b82444}{construct\_conditional}}() noexcept = default;}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00123}\mbox{\hyperlink{structkblib_1_1detail__poly_1_1construct__conditional_3_01construct__type_1_1copy__only_01_4_a3ff427c5a404874951c6672881f0fc38}{00123}}       \mbox{\hyperlink{structkblib_1_1detail__poly_1_1construct__conditional}{construct\_conditional}}(const \mbox{\hyperlink{structkblib_1_1detail__poly_1_1construct__conditional}{construct\_conditional}}\&) noexcept = default;}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00124}\mbox{\hyperlink{structkblib_1_1detail__poly_1_1construct__conditional_3_01construct__type_1_1copy__only_01_4_a2d89556ac6bba4411adac8add2ea24f1}{00124}}       \mbox{\hyperlink{structkblib_1_1detail__poly_1_1construct__conditional}{construct\_conditional}}(\mbox{\hyperlink{structkblib_1_1detail__poly_1_1construct__conditional}{construct\_conditional}}\&\&) = delete;}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00125}00125 }
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00126}\mbox{\hyperlink{structkblib_1_1detail__poly_1_1construct__conditional_3_01construct__type_1_1copy__only_01_4_ae77020d3379214da3e435c2e585e2401}{00126}}       auto operator=(const \mbox{\hyperlink{structkblib_1_1detail__poly_1_1construct__conditional}{construct\_conditional}}\&)}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00127}00127           -\/> \mbox{\hyperlink{structkblib_1_1detail__poly_1_1construct__conditional}{construct\_conditional}}\& = default;}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00128}\mbox{\hyperlink{structkblib_1_1detail__poly_1_1construct__conditional_3_01construct__type_1_1copy__only_01_4_a126d311ecbbd21374c064b16c306f84b}{00128}}       auto operator=(\mbox{\hyperlink{structkblib_1_1detail__poly_1_1construct__conditional}{construct\_conditional}}\&\&)}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00129}00129           -\/> \mbox{\hyperlink{structkblib_1_1detail__poly_1_1construct__conditional}{construct\_conditional}}\& = default;}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00130}\mbox{\hyperlink{structkblib_1_1detail__poly_1_1construct__conditional_3_01construct__type_1_1copy__only_01_4_a49b342dd43a56141ecb6203ed687ad35}{00130}}       \string~\mbox{\hyperlink{structkblib_1_1detail__poly_1_1construct__conditional}{construct\_conditional}}() = default;}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00131}00131    \};}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00132}00132 }
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00133}00133    template <>}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00134}\mbox{\hyperlink{structkblib_1_1detail__poly_1_1construct__conditional_3_01construct__type_1_1move_01_4}{00134}}    struct \mbox{\hyperlink{structkblib_1_1detail__poly_1_1construct__conditional}{construct\_conditional}}<\mbox{\hyperlink{namespacekblib_a2cc6d0e618d41f45deaaa5c6c357ed7a}{construct\_type}}::move> \{}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00135}\mbox{\hyperlink{structkblib_1_1detail__poly_1_1construct__conditional_3_01construct__type_1_1move_01_4_a91fa7504b98dbe9b919afbdda8ffbaf1}{00135}}       \mbox{\hyperlink{structkblib_1_1detail__poly_1_1construct__conditional_3_01construct__type_1_1move_01_4_a91fa7504b98dbe9b919afbdda8ffbaf1}{construct\_conditional}}() noexcept = default;}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00136}\mbox{\hyperlink{structkblib_1_1detail__poly_1_1construct__conditional_3_01construct__type_1_1move_01_4_a919fc73f686da9fd6ae9427ec0501b3c}{00136}}       \mbox{\hyperlink{structkblib_1_1detail__poly_1_1construct__conditional}{construct\_conditional}}(const \mbox{\hyperlink{structkblib_1_1detail__poly_1_1construct__conditional}{construct\_conditional}}\&) noexcept = delete;}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00137}\mbox{\hyperlink{structkblib_1_1detail__poly_1_1construct__conditional_3_01construct__type_1_1move_01_4_a00e910b7ef9db71c8f9a49c6eaba2ac6}{00137}}       \mbox{\hyperlink{structkblib_1_1detail__poly_1_1construct__conditional}{construct\_conditional}}(\mbox{\hyperlink{structkblib_1_1detail__poly_1_1construct__conditional}{construct\_conditional}}\&\&) noexcept = default;}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00138}00138 }
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00139}\mbox{\hyperlink{structkblib_1_1detail__poly_1_1construct__conditional_3_01construct__type_1_1move_01_4_a216f283c8bfccf908fa163a965a46358}{00139}}       auto operator=(const \mbox{\hyperlink{structkblib_1_1detail__poly_1_1construct__conditional}{construct\_conditional}}\&)}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00140}00140           -\/> \mbox{\hyperlink{structkblib_1_1detail__poly_1_1construct__conditional}{construct\_conditional}}\& = default;}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00141}\mbox{\hyperlink{structkblib_1_1detail__poly_1_1construct__conditional_3_01construct__type_1_1move_01_4_a4cd5f900d03c5794681ed3dd2bfb7e85}{00141}}       auto operator=(\mbox{\hyperlink{structkblib_1_1detail__poly_1_1construct__conditional}{construct\_conditional}}\&\&)}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00142}00142           -\/> \mbox{\hyperlink{structkblib_1_1detail__poly_1_1construct__conditional}{construct\_conditional}}\& = default;}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00143}\mbox{\hyperlink{structkblib_1_1detail__poly_1_1construct__conditional_3_01construct__type_1_1move_01_4_ae6cbdc7a91efa0766d9f6f2b72185171}{00143}}       \string~\mbox{\hyperlink{structkblib_1_1detail__poly_1_1construct__conditional}{construct\_conditional}}() = default;}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00144}00144    \};}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00145}00145 }
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00146}00146    template <>}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00147}\mbox{\hyperlink{structkblib_1_1detail__poly_1_1construct__conditional_3_01construct__type_1_1both_01_4}{00147}}    struct \mbox{\hyperlink{structkblib_1_1detail__poly_1_1construct__conditional}{construct\_conditional}}<\mbox{\hyperlink{namespacekblib_a2cc6d0e618d41f45deaaa5c6c357ed7a}{construct\_type}}::both> \{\};}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00148}00148 }
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00149}00149    \textcolor{keyword}{template} <>}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00150}\mbox{\hyperlink{structkblib_1_1detail__poly_1_1construct__conditional_3_01construct__type_1_1throw__move_01_4}{00150}}    \textcolor{keyword}{struct }\mbox{\hyperlink{structkblib_1_1detail__poly_1_1construct__conditional}{construct\_conditional}}<\mbox{\hyperlink{namespacekblib_a2cc6d0e618d41f45deaaa5c6c357ed7a}{construct\_type}}::\mbox{\hyperlink{namespacekblib_a2cc6d0e618d41f45deaaa5c6c357ed7aa04d3c750404e3d492d5d7d920189aa52}{throw\_move}}> \{}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00151}\mbox{\hyperlink{structkblib_1_1detail__poly_1_1construct__conditional_3_01construct__type_1_1throw__move_01_4_a1ddbccc810fbd7c6ee34ae60857b21f2}{00151}}       \mbox{\hyperlink{structkblib_1_1detail__poly_1_1construct__conditional_3_01construct__type_1_1throw__move_01_4_a1ddbccc810fbd7c6ee34ae60857b21f2}{construct\_conditional}}() noexcept = default;}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00152}\mbox{\hyperlink{structkblib_1_1detail__poly_1_1construct__conditional_3_01construct__type_1_1throw__move_01_4_aedf574a257c11f53ac2bd2ecdedab09b}{00152}}       \mbox{\hyperlink{structkblib_1_1detail__poly_1_1construct__conditional}{construct\_conditional}}(const \mbox{\hyperlink{structkblib_1_1detail__poly_1_1construct__conditional}{construct\_conditional}}\&) noexcept = delete;}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00153}\mbox{\hyperlink{structkblib_1_1detail__poly_1_1construct__conditional_3_01construct__type_1_1throw__move_01_4_af3f92c58a9963b907b0ca115b87fd608}{00153}}       \mbox{\hyperlink{structkblib_1_1detail__poly_1_1construct__conditional}{construct\_conditional}}(\mbox{\hyperlink{structkblib_1_1detail__poly_1_1construct__conditional}{construct\_conditional}}\&\&) noexcept(false) \{\}}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00154}00154 }
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00155}\mbox{\hyperlink{structkblib_1_1detail__poly_1_1construct__conditional_3_01construct__type_1_1throw__move_01_4_abc6cbaff576b2e93296254b15d4fadc5}{00155}}       \textcolor{keyword}{auto} \mbox{\hyperlink{structkblib_1_1detail__poly_1_1construct__conditional_3_01construct__type_1_1throw__move_01_4_abc6cbaff576b2e93296254b15d4fadc5}{operator=}}(\textcolor{keyword}{const} \mbox{\hyperlink{structkblib_1_1detail__poly_1_1construct__conditional}{construct\_conditional}}\&)}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00156}00156           -\/> \mbox{\hyperlink{structkblib_1_1detail__poly_1_1construct__conditional}{construct\_conditional}}\& = \textcolor{keywordflow}{default};}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00157}\mbox{\hyperlink{structkblib_1_1detail__poly_1_1construct__conditional_3_01construct__type_1_1throw__move_01_4_a6e832fb5b11ad5d1ae63cf6a8839090b}{00157}}       \textcolor{keyword}{auto} \mbox{\hyperlink{structkblib_1_1detail__poly_1_1construct__conditional_3_01construct__type_1_1throw__move_01_4_a6e832fb5b11ad5d1ae63cf6a8839090b}{operator=}}(\mbox{\hyperlink{structkblib_1_1detail__poly_1_1construct__conditional}{construct\_conditional}}\&\&)}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00158}00158           -\/> \mbox{\hyperlink{structkblib_1_1detail__poly_1_1construct__conditional}{construct\_conditional}}\& = \textcolor{keywordflow}{default};}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00159}\mbox{\hyperlink{structkblib_1_1detail__poly_1_1construct__conditional_3_01construct__type_1_1throw__move_01_4_a957e79cdc3c4fbf97d56805deecbdd21}{00159}}       \mbox{\hyperlink{structkblib_1_1detail__poly_1_1construct__conditional_3_01construct__type_1_1throw__move_01_4_a957e79cdc3c4fbf97d56805deecbdd21}{\string~construct\_conditional}}() = \textcolor{keywordflow}{default};}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00160}00160    \};}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00161}00161 }
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00162}00162    \textcolor{keyword}{template} <>}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00163}\mbox{\hyperlink{structkblib_1_1detail__poly_1_1construct__conditional_3_01construct__type_1_1both__throw_01_4}{00163}}    \textcolor{keyword}{struct }\mbox{\hyperlink{structkblib_1_1detail__poly_1_1construct__conditional}{construct\_conditional}}<\mbox{\hyperlink{namespacekblib_a2cc6d0e618d41f45deaaa5c6c357ed7a}{construct\_type}}::\mbox{\hyperlink{namespacekblib_a2cc6d0e618d41f45deaaa5c6c357ed7aab009e0a1fa84b4e6e58f4ea7acba9712}{both\_throw}}> \{}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00164}\mbox{\hyperlink{structkblib_1_1detail__poly_1_1construct__conditional_3_01construct__type_1_1both__throw_01_4_acb0de7f0ec9e89ad429f892805428139}{00164}}       \mbox{\hyperlink{structkblib_1_1detail__poly_1_1construct__conditional_3_01construct__type_1_1both__throw_01_4_acb0de7f0ec9e89ad429f892805428139}{construct\_conditional}}() noexcept = default;}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00165}\mbox{\hyperlink{structkblib_1_1detail__poly_1_1construct__conditional_3_01construct__type_1_1both__throw_01_4_a812dfdd0e24aea3269c6a7a2b245b910}{00165}}       \mbox{\hyperlink{structkblib_1_1detail__poly_1_1construct__conditional}{construct\_conditional}}(const \mbox{\hyperlink{structkblib_1_1detail__poly_1_1construct__conditional}{construct\_conditional}}\&) = default;}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00166}\mbox{\hyperlink{structkblib_1_1detail__poly_1_1construct__conditional_3_01construct__type_1_1both__throw_01_4_ad4a6e51062f5d9a485c397e27e4166b5}{00166}}       \mbox{\hyperlink{structkblib_1_1detail__poly_1_1construct__conditional}{construct\_conditional}}(\mbox{\hyperlink{structkblib_1_1detail__poly_1_1construct__conditional}{construct\_conditional}}\&\&) noexcept(false) \{\}}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00167}00167 }
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00168}\mbox{\hyperlink{structkblib_1_1detail__poly_1_1construct__conditional_3_01construct__type_1_1both__throw_01_4_ac38f4f845b2b21ce0e0d17edb7a80cee}{00168}}       \textcolor{keyword}{auto} \mbox{\hyperlink{structkblib_1_1detail__poly_1_1construct__conditional_3_01construct__type_1_1both__throw_01_4_ac38f4f845b2b21ce0e0d17edb7a80cee}{operator=}}(\textcolor{keyword}{const} \mbox{\hyperlink{structkblib_1_1detail__poly_1_1construct__conditional}{construct\_conditional}}\&)}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00169}00169           -\/> \mbox{\hyperlink{structkblib_1_1detail__poly_1_1construct__conditional}{construct\_conditional}}\& = \textcolor{keywordflow}{default};}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00170}\mbox{\hyperlink{structkblib_1_1detail__poly_1_1construct__conditional_3_01construct__type_1_1both__throw_01_4_addde9f29bd3d9a8b71fdf32a46caf22b}{00170}}       \textcolor{keyword}{auto} \mbox{\hyperlink{structkblib_1_1detail__poly_1_1construct__conditional_3_01construct__type_1_1both__throw_01_4_addde9f29bd3d9a8b71fdf32a46caf22b}{operator=}}(\mbox{\hyperlink{structkblib_1_1detail__poly_1_1construct__conditional}{construct\_conditional}}\&\&)}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00171}00171           -\/> \mbox{\hyperlink{structkblib_1_1detail__poly_1_1construct__conditional}{construct\_conditional}}\& = \textcolor{keywordflow}{default};}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00172}\mbox{\hyperlink{structkblib_1_1detail__poly_1_1construct__conditional_3_01construct__type_1_1both__throw_01_4_abcdbd55537f8b00efd4c90fadc40d4ea}{00172}}       \mbox{\hyperlink{structkblib_1_1detail__poly_1_1construct__conditional_3_01construct__type_1_1both__throw_01_4_abcdbd55537f8b00efd4c90fadc40d4ea}{\string~construct\_conditional}}() = \textcolor{keywordflow}{default};}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00173}00173    \};}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00174}00174 }
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00175}00175    \textcolor{keyword}{template} <\textcolor{keyword}{typename} T>}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00176}\mbox{\hyperlink{namespacekblib_1_1detail__poly_a61756f447c8151e8a8497341f0109885}{00176}}    \textcolor{keyword}{constexpr} \mbox{\hyperlink{namespacekblib_a2cc6d0e618d41f45deaaa5c6c357ed7a}{construct\_type}} \mbox{\hyperlink{namespacekblib_1_1detail__poly_a61756f447c8151e8a8497341f0109885}{construct\_traits}}}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00177}00177        = construct\_type::copy\_only* std::is\_copy\_constructible<T>::value}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00178}00178          | construct\_type::move* std::is\_move\_constructible<T>::value}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00179}00179          | construct\_type::throw\_move*(}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00180}00180              std::is\_move\_constructible<T>::value}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00181}00181              \& not std::is\_nothrow\_move\_constructible<T>::value);}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00182}00182 }
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00183}00183    \textcolor{keyword}{template} <\textcolor{keyword}{typename} T, \textcolor{keyword}{typename} hash = \textcolor{keywordtype}{void}>}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00184}\mbox{\hyperlink{structkblib_1_1detail__poly_1_1erased__hash__t}{00184}}    \textcolor{keyword}{struct }\mbox{\hyperlink{structkblib_1_1detail__poly_1_1erased__hash__t}{erased\_hash\_t}} \{\};}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00185}00185 }
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00186}00186    \textcolor{keyword}{template} <\textcolor{keyword}{typename} T>}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00187}\mbox{\hyperlink{structkblib_1_1detail__poly_1_1erased__hash__t_3_01_t_00_01void__t_3_01fakestd_1_1invoke__resulte0f114b0d28ead89999e6027fb1e55a8}{00187}}    \textcolor{keyword}{struct }\mbox{\hyperlink{structkblib_1_1detail__poly_1_1erased__hash__t}{erased\_hash\_t}}<T, \mbox{\hyperlink{namespacekblib_1_1fakestd_a2df414d5a1a1f59c8f33520890755f84}{void\_t}}<fakestd::\mbox{\hyperlink{namespacekblib_1_1fakestd_a2641177fb1c17f887061308f2b8b6cae}{invoke\_result\_t}}<std::hash<T>, T>>> \{}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00188}\mbox{\hyperlink{structkblib_1_1detail__poly_1_1erased__hash__t_3_01_t_00_01void__t_3_01fakestd_1_1invoke__resulte0f114b0d28ead89999e6027fb1e55a8_a89d0a186256e14199175bd689f14ad1c}{00188}}       \textcolor{keyword}{static} \textcolor{keyword}{auto} \mbox{\hyperlink{structkblib_1_1detail__poly_1_1erased__hash__t_3_01_t_00_01void__t_3_01fakestd_1_1invoke__resulte0f114b0d28ead89999e6027fb1e55a8_a89d0a186256e14199175bd689f14ad1c}{default\_hash}}(\textcolor{keywordtype}{void}* obj) -\/> std::size\_t \{}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00189}00189          \textcolor{keywordflow}{return} std::hash<T>()(*\textcolor{keyword}{static\_cast<}\textcolor{keyword}{const }T*\textcolor{keyword}{>}(obj));}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00190}00190       \}}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00191}00191 }
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00192}\mbox{\hyperlink{structkblib_1_1detail__poly_1_1erased__hash__t_3_01_t_00_01void__t_3_01fakestd_1_1invoke__resulte0f114b0d28ead89999e6027fb1e55a8_a89a5cd649f9183ea94355a525957ecdd}{00192}}       \mbox{\hyperlink{namespacekblib_a8fe1791c4dfe674d145963ab5b3121ae}{alias}}<std::size\_t (*)(\textcolor{keywordtype}{void}*)> hash = \&default\_hash;}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00193}00193    \};}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00194}00194 }
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00195}00195    \textcolor{keyword}{template} <\textcolor{keyword}{typename} T, \textcolor{keyword}{typename} hash = \textcolor{keywordtype}{void}>}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00196}\mbox{\hyperlink{structkblib_1_1detail__poly_1_1kblib__erased__hash__t}{00196}}    \textcolor{keyword}{struct }\mbox{\hyperlink{structkblib_1_1detail__poly_1_1kblib__erased__hash__t}{kblib\_erased\_hash\_t}} \{\};}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00197}00197 }
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00198}00198    \textcolor{keyword}{template} <\textcolor{keyword}{typename} T>}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00199}\mbox{\hyperlink{structkblib_1_1detail__poly_1_1kblib__erased__hash__t_3_01_t_00_01void__t_3_01fakestd_1_1invoke_55adc4f6ef833cf6a377ac3d9da5a8e3}{00199}}    \textcolor{keyword}{struct }\mbox{\hyperlink{structkblib_1_1detail__poly_1_1kblib__erased__hash__t}{kblib\_erased\_hash\_t}}<}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00200}00200        T, \mbox{\hyperlink{namespacekblib_1_1fakestd_a2df414d5a1a1f59c8f33520890755f84}{void\_t}}<fakestd::\mbox{\hyperlink{namespacekblib_1_1fakestd_a2641177fb1c17f887061308f2b8b6cae}{invoke\_result\_t}}<std::hash<T>, T>>> \{}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00201}\mbox{\hyperlink{structkblib_1_1detail__poly_1_1kblib__erased__hash__t_3_01_t_00_01void__t_3_01fakestd_1_1invoke_55adc4f6ef833cf6a377ac3d9da5a8e3_a826f00a7f36fdbcb22675b785fc8b9f8}{00201}}       \textcolor{keyword}{static} \textcolor{keyword}{auto} \mbox{\hyperlink{structkblib_1_1detail__poly_1_1kblib__erased__hash__t_3_01_t_00_01void__t_3_01fakestd_1_1invoke_55adc4f6ef833cf6a377ac3d9da5a8e3_a826f00a7f36fdbcb22675b785fc8b9f8}{default\_hash}}(\textcolor{keywordtype}{void}* obj) -\/> std::size\_t \{}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00202}00202          \textcolor{keywordflow}{return} \mbox{\hyperlink{structkblib_1_1_f_n_v__hash}{FNV\_hash<T>}}\{\}(*\textcolor{keyword}{static\_cast<}\textcolor{keyword}{const }T*\textcolor{keyword}{>}(obj));}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00203}00203       \}}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00204}00204 }
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00205}\mbox{\hyperlink{structkblib_1_1detail__poly_1_1kblib__erased__hash__t_3_01_t_00_01void__t_3_01fakestd_1_1invoke_55adc4f6ef833cf6a377ac3d9da5a8e3_adb7b81147b605ef169f85d872ac1d7c0}{00205}}       \mbox{\hyperlink{namespacekblib_a8fe1791c4dfe674d145963ab5b3121ae}{alias}}<std::size\_t (*)(\textcolor{keywordtype}{void}*)> hash = \&default\_hash;}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00206}00206    \};}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00207}00207 }
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00208}00208    \textcolor{keyword}{template} <\textcolor{keyword}{typename} Traits>}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00209}\mbox{\hyperlink{structkblib_1_1detail__poly_1_1erased__construct}{00209}}    \textcolor{keyword}{struct }\mbox{\hyperlink{structkblib_1_1detail__poly_1_1erased__construct}{erased\_construct}}}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00210}00210        : Traits::copy\_t}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00211}00211        , Traits::move\_t}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00212}00212        , Traits::destroy\_t \{}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00213}00213       \textcolor{keyword}{using }\mbox{\hyperlink{namespacekblib_ac912dd210d34963da9bd40a1a6296308}{Traits::copy\_t::copy}};}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00214}00214       \textcolor{keyword}{using }Traits::move\_t::move;}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00215}00215 }
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00216}00216       \textcolor{keyword}{using }Traits::destroy\_t::destroy;}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00217}00217    \};}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00218}00218 }
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00219}00219    \textcolor{keyword}{template} <\textcolor{keyword}{typename} T, \textcolor{keyword}{typename} Traits>}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00220}\mbox{\hyperlink{namespacekblib_1_1detail__poly_ae72ac6a24753c923d2db4b7559718bec}{00220}}    \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{auto} \mbox{\hyperlink{namespacekblib_1_1detail__poly_ae72ac6a24753c923d2db4b7559718bec}{make\_ops\_t}}() noexcept -\/> \mbox{\hyperlink{structkblib_1_1detail__poly_1_1erased__construct}{erased\_construct}}<Traits> \{}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00221}00221       \textcolor{keyword}{static\_assert}(\mbox{\hyperlink{structkblib_1_1implies}{implies}}<\mbox{\hyperlink{namespacekblib_1_1detail__poly_aa9dd6842a655495099bc36a29c947f3c}{Traits::copyable}},}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00222}00222                             std::is\_copy\_constructible<T>::value>::value,}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00223}00223                     \textcolor{stringliteral}{"{}T must be copy constructible if Traits is."{}});}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00224}00224       \textcolor{keyword}{static\_assert}(}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00225}00225           \mbox{\hyperlink{structkblib_1_1implies}{implies}}<\mbox{\hyperlink{namespacekblib_1_1detail__poly_ab9643d14f3057466208cd3c874114552}{Traits::nothrow\_movable}},}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00226}00226                   std::is\_nothrow\_move\_constructible<T>::value>::value,}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00227}00227           \textcolor{stringliteral}{"{}T must be nothrow move constructible if Traits is."{}});}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00228}00228       \textcolor{keyword}{static\_assert}(}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00229}00229           \mbox{\hyperlink{structkblib_1_1implies}{implies<Traits::movable, std::is\_move\_constructible<T>::value}}>::value,}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00230}00230           \textcolor{stringliteral}{"{}T must be move constructible if Traits is."{}});}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00231}00231       \textcolor{keywordflow}{return} \{\{\textcolor{keyword}{typename} Traits::copy\_t\{\textcolor{keyword}{static\_cast<}T*\textcolor{keyword}{>}(\textcolor{keyword}{nullptr})\}\},}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00232}00232               \{\textcolor{keyword}{typename} Traits::move\_t\{\textcolor{keyword}{static\_cast<}T*\textcolor{keyword}{>}(\textcolor{keyword}{nullptr})\}\},}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00233}00233               \{\textcolor{keyword}{typename} Traits::destroy\_t\{\textcolor{keyword}{static\_cast<}T*\textcolor{keyword}{>}(\textcolor{keyword}{nullptr})\}\}\};}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00234}00234    \}}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00235}00235 }
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00236}00236    \textcolor{keyword}{template} <\textcolor{keyword}{typename} T, \textcolor{keyword}{typename} = \textcolor{keywordtype}{void}>}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00237}\mbox{\hyperlink{structkblib_1_1detail__poly_1_1extract__derived__size}{00237}}    \textcolor{keyword}{struct }\mbox{\hyperlink{structkblib_1_1detail__poly_1_1extract__derived__size}{extract\_derived\_size}}}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00238}00238        : std::integral\_constant<std::size\_t, sizeof(T)> \{\};}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00239}00239    \textcolor{keyword}{template} <\textcolor{keyword}{typename} T>}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00240}\mbox{\hyperlink{structkblib_1_1detail__poly_1_1extract__derived__size_3_01_t_00_01void__if__t_3_07_t_1_1max__der728deceb0d3c42387b62a9cae41666e5}{00240}}    \textcolor{keyword}{struct }\mbox{\hyperlink{structkblib_1_1detail__poly_1_1extract__derived__size}{extract\_derived\_size}}<T, \mbox{\hyperlink{namespacekblib_ab3cc24416f0b9a6504e1c6a437ed6230}{void\_if\_t}}<(T::max\_derived\_size > sizeof(T))>>}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00241}00241        : std::integral\_constant<std::size\_t, T::max\_derived\_size> \{\};}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00242}00242 }
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00243}00243 \} \textcolor{comment}{// namespace detail\_poly}}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00244}00244 }
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00246}00246 \textcolor{keyword}{template} <\textcolor{keyword}{typename} T>}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00247}\mbox{\hyperlink{namespacekblib_afc76eb7c2cd74d00487dcfcf9f326c53}{00247}} \textcolor{keyword}{inline} \textcolor{keyword}{auto} \mbox{\hyperlink{namespacekblib_a26ab0d2883ebc03dffa0dabedfc7d906}{noop}}(\textcolor{keywordtype}{void}*, \textcolor{keyword}{const} T*) -\/> T* \{}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00248}00248    \textcolor{keywordflow}{return} \textcolor{keyword}{nullptr};}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00249}00249 \}}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00251}00251 \textcolor{keyword}{template} <\textcolor{keyword}{typename} T, \textcolor{keywordtype}{bool} nothrow>}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00252}\mbox{\hyperlink{namespacekblib_a26ab0d2883ebc03dffa0dabedfc7d906}{00252}} \textcolor{keyword}{inline} \textcolor{keyword}{auto} \mbox{\hyperlink{namespacekblib_a26ab0d2883ebc03dffa0dabedfc7d906}{noop}}(\textcolor{keywordtype}{void}*, T*) \textcolor{keyword}{noexcept}(nothrow) -\/> T* \{}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00253}00253    \textcolor{keywordflow}{return} \textcolor{keyword}{nullptr};}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00254}00254 \}}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00256}00256 \textcolor{keyword}{template} <\textcolor{keyword}{typename} Obj, \textcolor{keywordtype}{bool} copyable>}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00257}\mbox{\hyperlink{structkblib_1_1default__copy}{00257}} \textcolor{keyword}{struct }\mbox{\hyperlink{structkblib_1_1default__copy}{default\_copy}} \{}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00258}00258  \textcolor{keyword}{private}:}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00259}00259    \textcolor{keyword}{template} <\textcolor{keyword}{typename} T>}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00260}00260    \textcolor{keyword}{static} \textcolor{keyword}{auto} do\_copy(\textcolor{keywordtype}{void}* dest, \textcolor{keyword}{const} Obj* from) -\/> Obj* \{}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00261}00261       \textcolor{keywordflow}{return} \textcolor{keyword}{static\_cast<}Obj*\textcolor{keyword}{>}(\textcolor{keyword}{new} (dest) T(*\textcolor{keyword}{static\_cast<}\textcolor{keyword}{const }T*\textcolor{keyword}{>}(from)));}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00262}00262    \}}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00263}00263 }
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00264}00264    \textcolor{keyword}{auto} (*p\_copy)(\textcolor{keywordtype}{void}* dest, \textcolor{keyword}{const} Obj* from) -\/> Obj* = \&noop<Obj>;}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00265}00265 }
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00266}00266  \textcolor{keyword}{public}:}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00268}\mbox{\hyperlink{structkblib_1_1default__copy_a65e84579c624145f275dfa5479299f8f}{00268}}    \mbox{\hyperlink{structkblib_1_1default__copy_a65e84579c624145f275dfa5479299f8f}{default\_copy}}() noexcept = default;}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00270}00270    template <typename T>}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00271}\mbox{\hyperlink{structkblib_1_1default__copy_ace51156797bf1b4f023248c59f661355}{00271}}    explicit \mbox{\hyperlink{structkblib_1_1default__copy}{default\_copy}}(T*) noexcept}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00272}00272        : p\_copy(\&do\_copy<T>) \{\}}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00273}00273 }
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00275}\mbox{\hyperlink{structkblib_1_1default__copy_a41d2389f432032c876adf800d72e5aac}{00275}}    \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{auto} \mbox{\hyperlink{structkblib_1_1default__copy_a41d2389f432032c876adf800d72e5aac}{copy}}(\textcolor{keywordtype}{void}* dest, \textcolor{keyword}{const} Obj* from) -\/> Obj* \{}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00276}00276       \textcolor{keywordflow}{return} p\_copy(dest, from);}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00277}00277    \}}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00278}00278 \};}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00279}00279 \textcolor{keyword}{template} <\textcolor{keyword}{typename} Obj>}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00280}\mbox{\hyperlink{structkblib_1_1default__copy_3_01_obj_00_01false_01_4}{00280}} \textcolor{keyword}{struct }\mbox{\hyperlink{structkblib_1_1default__copy}{default\_copy}}<Obj, false> \{}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00281}\mbox{\hyperlink{structkblib_1_1default__copy_3_01_obj_00_01false_01_4_a3f8bd4a4649811f6e646f798097330fa}{00281}}    \mbox{\hyperlink{structkblib_1_1default__copy_3_01_obj_00_01false_01_4_a3f8bd4a4649811f6e646f798097330fa}{default\_copy}}() noexcept = default;}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00282}00282    template <typename T>}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00283}\mbox{\hyperlink{structkblib_1_1default__copy_3_01_obj_00_01false_01_4_a07275e4f983139fbcdd911355a4618eb}{00283}}    explicit \mbox{\hyperlink{structkblib_1_1default__copy}{default\_copy}}(T*) noexcept \{\}}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00284}\mbox{\hyperlink{structkblib_1_1default__copy_3_01_obj_00_01false_01_4_a22c067235ad19b45cca4f22a1ef5a035}{00284}}    \textcolor{keyword}{auto} \mbox{\hyperlink{structkblib_1_1default__copy_3_01_obj_00_01false_01_4_a22c067235ad19b45cca4f22a1ef5a035}{copy}}(\textcolor{keywordtype}{void}* dest, \textcolor{keyword}{const} Obj* from) -\/> Obj* = \textcolor{keyword}{delete};}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00285}00285 \};}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00290}00290 \textcolor{keyword}{template} <\textcolor{keyword}{typename} Obj, \textcolor{keyword}{auto} (Obj::*clone)(\textcolor{keywordtype}{void}*) \textcolor{keyword}{const}-\/>Obj*>}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00291}\mbox{\hyperlink{structkblib_1_1clone__copy}{00291}} \textcolor{keyword}{struct }\mbox{\hyperlink{structkblib_1_1clone__copy}{clone\_copy}} \{}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00293}\mbox{\hyperlink{structkblib_1_1clone__copy_a63665ae302ac139ccd642355214deeb5}{00293}}    \mbox{\hyperlink{structkblib_1_1clone__copy_a63665ae302ac139ccd642355214deeb5}{clone\_copy}}() = \textcolor{keywordflow}{default};}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00295}00295    \textcolor{keyword}{template} <\textcolor{keyword}{typename} T>}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00296}\mbox{\hyperlink{structkblib_1_1clone__copy_ac2a901a9473f364234e13d2813ead6a7}{00296}}    \mbox{\hyperlink{structkblib_1_1clone__copy_ac2a901a9473f364234e13d2813ead6a7}{clone\_copy}}(T*) \{\}}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00297}00297 }
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00299}\mbox{\hyperlink{structkblib_1_1clone__copy_a8416f432b6fd97f8ed0ac290e4982136}{00299}}    \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{auto} \mbox{\hyperlink{structkblib_1_1clone__copy_a8416f432b6fd97f8ed0ac290e4982136}{copy}}(\textcolor{keywordtype}{void}* dest, \textcolor{keyword}{const} Obj* from) -\/> Obj* \{}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00300}00300       \textcolor{keywordflow}{return} (from-\/>*clone)(dest);}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00301}00301    \}}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00302}00302 \};}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00304}00304 \textcolor{keyword}{template} <\textcolor{keyword}{typename} Obj, \textcolor{keywordtype}{bool} movable, \textcolor{keywordtype}{bool} nothrow, \textcolor{keywordtype}{bool} copyable>}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00305}\mbox{\hyperlink{structkblib_1_1default__move}{00305}} \textcolor{keyword}{struct }\mbox{\hyperlink{structkblib_1_1default__move}{default\_move}} \{}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00306}00306  \textcolor{keyword}{private}:}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00307}00307    \textcolor{keyword}{template} <\textcolor{keyword}{typename} T>}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00308}00308    \textcolor{keyword}{static} \textcolor{keyword}{auto} do\_move(\textcolor{keywordtype}{void}* dest, Obj* from) \textcolor{keyword}{noexcept}(nothrow) -\/> Obj* \{}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00309}00309       \textcolor{keywordflow}{return} \textcolor{keyword}{static\_cast<}Obj*\textcolor{keyword}{>}(\textcolor{keyword}{new} (dest) T(std::move(*\textcolor{keyword}{static\_cast<}T*\textcolor{keyword}{>}(from))));}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00310}00310    \}}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00311}00311    \textcolor{comment}{// noexcept isn't working here on clang}}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00312}00312    \textcolor{keyword}{auto} (*p\_move)(\textcolor{keywordtype}{void}* dest, Obj* from) \textcolor{keyword}{noexcept}(\textcolor{keyword}{false})}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00313}00313        -\/> Obj* = \&noop<Obj, nothrow>;}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00314}00314 }
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00315}00315  \textcolor{keyword}{public}:}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00317}\mbox{\hyperlink{structkblib_1_1default__move_ac2b8e153b7edf8516736c2c2aed332af}{00317}}    \mbox{\hyperlink{structkblib_1_1default__move_ac2b8e153b7edf8516736c2c2aed332af}{default\_move}}() noexcept = default;}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00319}00319    template <typename T>}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00320}\mbox{\hyperlink{structkblib_1_1default__move_ad4d53bb879ab282d61ef5d52c5d29fa6}{00320}}    explicit \mbox{\hyperlink{structkblib_1_1default__move}{default\_move}}(T*) noexcept}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00321}00321        : p\_move(\&do\_move<T>) \{\}}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00322}00322 }
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00324}\mbox{\hyperlink{structkblib_1_1default__move_ab7dcb8ef56bd4a64387291a048013a23}{00324}}    \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{auto} \mbox{\hyperlink{structkblib_1_1default__move_ab7dcb8ef56bd4a64387291a048013a23}{move}}(\textcolor{keywordtype}{void}* dest, Obj* from) \textcolor{keyword}{noexcept}(nothrow) -\/> Obj* \{}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00325}00325       \textcolor{keywordflow}{return} p\_move(dest, from);}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00326}00326    \}}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00327}00327 \};}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00328}00328 \textcolor{keyword}{template} <\textcolor{keyword}{typename} Obj, \textcolor{keywordtype}{bool} nothrow>}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00329}\mbox{\hyperlink{structkblib_1_1default__move_3_01_obj_00_01false_00_01nothrow_00_01false_01_4}{00329}} \textcolor{keyword}{struct }\mbox{\hyperlink{structkblib_1_1default__move}{default\_move}}<Obj, false, nothrow, false> \{}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00330}\mbox{\hyperlink{structkblib_1_1default__move_3_01_obj_00_01false_00_01nothrow_00_01false_01_4_a3698cf5353c8e883ee2e8a1b446a3509}{00330}}    \mbox{\hyperlink{structkblib_1_1default__move_3_01_obj_00_01false_00_01nothrow_00_01false_01_4_a3698cf5353c8e883ee2e8a1b446a3509}{default\_move}}() noexcept = default;}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00331}00331    template <typename T>}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00332}\mbox{\hyperlink{structkblib_1_1default__move_3_01_obj_00_01false_00_01nothrow_00_01false_01_4_a14e276896caa2f1dd31a449f655036cf}{00332}}    explicit \mbox{\hyperlink{structkblib_1_1default__move}{default\_move}}(T*) noexcept \{\}}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00333}\mbox{\hyperlink{structkblib_1_1default__move_3_01_obj_00_01false_00_01nothrow_00_01false_01_4_a15ade6b63ee05ee6ddfe5595b59ebf95}{00333}}    \textcolor{keyword}{auto} \mbox{\hyperlink{structkblib_1_1default__move_3_01_obj_00_01false_00_01nothrow_00_01false_01_4_a15ade6b63ee05ee6ddfe5595b59ebf95}{move}}(\textcolor{keywordtype}{void}* dest, Obj* from) \textcolor{keyword}{noexcept}(nothrow) -\/> Obj* = \textcolor{keyword}{delete};}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00334}00334 \};}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00335}00335 \textcolor{comment}{// fallback on copy}}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00336}00336 \textcolor{keyword}{template} <\textcolor{keyword}{typename} Obj, \textcolor{keywordtype}{bool} nothrow>}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00337}\mbox{\hyperlink{structkblib_1_1default__move_3_01_obj_00_01false_00_01nothrow_00_01true_01_4}{00337}} \textcolor{keyword}{struct }\mbox{\hyperlink{structkblib_1_1default__move}{default\_move}}<Obj, false, nothrow, true>}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00338}00338     : \textcolor{keyword}{private} \mbox{\hyperlink{structkblib_1_1default__copy}{default\_copy}}<Obj, true> \{}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00339}00339    \textcolor{keyword}{using }\mbox{\hyperlink{structkblib_1_1default__copy}{default\_copy}}<Obj, \textcolor{keyword}{true}>::default\_copy;}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00340}00340 }
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00341}\mbox{\hyperlink{structkblib_1_1default__move_3_01_obj_00_01false_00_01nothrow_00_01true_01_4_a3fe62f4276aedef5d2ac13925c4dc0ff}{00341}}    \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{auto} \mbox{\hyperlink{structkblib_1_1default__move_3_01_obj_00_01false_00_01nothrow_00_01true_01_4_a3fe62f4276aedef5d2ac13925c4dc0ff}{move}}(\textcolor{keywordtype}{void}* dest, \textcolor{keyword}{const} Obj* from) \textcolor{keyword}{noexcept}(nothrow)}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00342}00342        -\/> Obj* \{}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00343}00343       \textcolor{keywordflow}{return} this-\/>\mbox{\hyperlink{namespacekblib_ac912dd210d34963da9bd40a1a6296308}{copy}}(dest, from);}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00344}00344    \}}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00345}00345 \};}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00349}00349 \textcolor{keyword}{template} <\textcolor{keyword}{typename} Obj>}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00350}\mbox{\hyperlink{structkblib_1_1default__destroy}{00350}} \textcolor{keyword}{struct }\mbox{\hyperlink{structkblib_1_1default__destroy}{default\_destroy}} \{}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00351}\mbox{\hyperlink{structkblib_1_1default__destroy_a90732b6c9652a5f3755b6554e7a1d037}{00351}}    \mbox{\hyperlink{structkblib_1_1default__destroy_a90732b6c9652a5f3755b6554e7a1d037}{default\_destroy}}() noexcept = default;}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00352}00352    template <typename T>}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00353}\mbox{\hyperlink{structkblib_1_1default__destroy_a6ace9f929078a6586a54fc99e90f7555}{00353}}    explicit \mbox{\hyperlink{structkblib_1_1default__destroy}{default\_destroy}}(T*) noexcept \{\}}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00354}00354 }
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00355}\mbox{\hyperlink{structkblib_1_1default__destroy_a1275f8105439d3ca987b57569b64fb2d}{00355}}    \textcolor{keyword}{auto} \mbox{\hyperlink{structkblib_1_1default__destroy_a1275f8105439d3ca987b57569b64fb2d}{destroy}}(Obj* obj) -\/> \textcolor{keywordtype}{void} \{ obj-\/>\string~Obj(); \}}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00356}00356    \textcolor{keyword}{static\_assert}(std::has\_virtual\_destructor<Obj>::value,}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00357}00357                  \textcolor{stringliteral}{"{}Obj must have a virtual destructor"{}});}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00358}00358 \};}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00359}00359 }
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00360}00360 \textcolor{comment}{// TODO(killerbee13): Distinguish between pointers to T and to}}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00361}00361 \textcolor{comment}{// most-\/derived-\/object}}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00362}00362 }
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00372}00372 \textcolor{keyword}{template} <\textcolor{keyword}{typename} Obj,}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00373}00373           \mbox{\hyperlink{namespacekblib_a2cc6d0e618d41f45deaaa5c6c357ed7a}{construct\_type}} CType = detail\_poly::construct\_traits<Obj>>}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00374}\mbox{\hyperlink{structkblib_1_1poly__obj__traits}{00374}} \textcolor{keyword}{struct }\mbox{\hyperlink{structkblib_1_1poly__obj__traits}{poly\_obj\_traits}} \{}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00375}00375 }
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00382}\mbox{\hyperlink{structkblib_1_1poly__obj__traits_a49bde19820a591802e7c80c4f200385a}{00382}}    \textcolor{keyword}{constexpr} \textcolor{keyword}{static} std::size\_t default\_capacity}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00383}00383        = \mbox{\hyperlink{structkblib_1_1detail__poly_1_1extract__derived__size}{detail\_poly::extract\_derived\_size<Obj>::value}};}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00384}00384 }
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00388}\mbox{\hyperlink{structkblib_1_1poly__obj__traits_ab38edf9610d6aec9da89a4605f789ef5}{00388}}    \textcolor{keyword}{constexpr} \textcolor{keyword}{static} std::size\_t alignment}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00389}00389        = \mbox{\hyperlink{namespacekblib_1_1nums_a64067ecc4167ce1cfe32860ef5c1dc47}{std::max}}(\textcolor{keyword}{alignof}(Obj), \textcolor{keyword}{alignof}(std::max\_align\_t));}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00390}00390 }
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00394}\mbox{\hyperlink{structkblib_1_1poly__obj__traits_ac43bc6b7443b6009a1d6d255bc02b131}{00394}}    \textcolor{keyword}{constexpr} \textcolor{keyword}{static} \textcolor{keywordtype}{bool} \mbox{\hyperlink{namespacekblib_1_1detail__poly_aa9dd6842a655495099bc36a29c947f3c}{copyable}} = \mbox{\hyperlink{namespacekblib_1_1detail__poly_aa9dd6842a655495099bc36a29c947f3c}{detail\_poly::copyable}}(CType);}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00395}00395 }
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00399}\mbox{\hyperlink{structkblib_1_1poly__obj__traits_a614674cd3a2ae649d5fe60b5b14695fa}{00399}}    \textcolor{keyword}{constexpr} \textcolor{keyword}{static} \textcolor{keywordtype}{bool} \mbox{\hyperlink{namespacekblib_1_1detail__poly_aa3f1e557e58498f440cfb3a47edc8e69}{movable}} = \mbox{\hyperlink{namespacekblib_1_1detail__poly_aa3f1e557e58498f440cfb3a47edc8e69}{detail\_poly::movable}}(CType);}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00403}\mbox{\hyperlink{structkblib_1_1poly__obj__traits_af5e3a1c7b48c95a7276f85566400c7d1}{00403}}    \textcolor{keyword}{constexpr} \textcolor{keyword}{static} \textcolor{keywordtype}{bool} \mbox{\hyperlink{namespacekblib_1_1detail__poly_ab9643d14f3057466208cd3c874114552}{nothrow\_movable}} = \mbox{\hyperlink{namespacekblib_1_1detail__poly_ab9643d14f3057466208cd3c874114552}{detail\_poly::nothrow\_movable}}(CType);}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00404}00404 }
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00417}\mbox{\hyperlink{structkblib_1_1poly__obj__traits_a03b2953cb6e3df1a64ef4bff6afa93e8}{00417}}    \textcolor{keyword}{using }\mbox{\hyperlink{structkblib_1_1default__copy}{copy\_t}} = \mbox{\hyperlink{structkblib_1_1default__copy}{default\_copy<Obj, copyable>}};}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00418}00418 }
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00432}\mbox{\hyperlink{structkblib_1_1poly__obj__traits_a487c8a93bae7ffde17a92bb02e99988d}{00432}}    \textcolor{keyword}{using }\mbox{\hyperlink{structkblib_1_1default__move}{move\_t}} = \mbox{\hyperlink{structkblib_1_1default__move}{default\_move<Obj, movable, nothrow\_movable, copyable>}};}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00433}00433 }
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00447}\mbox{\hyperlink{structkblib_1_1poly__obj__traits_aec014c9dea78dc660d62277f17f9e367}{00447}}    \textcolor{keyword}{using }\mbox{\hyperlink{structkblib_1_1default__destroy}{destroy\_t}} = \mbox{\hyperlink{structkblib_1_1default__destroy}{default\_destroy<Obj>}};}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00448}00448    \textcolor{keyword}{static\_assert}(std::is\_empty<destroy\_t>::value, \textcolor{stringliteral}{"{}"{}});}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00449}00449 \};}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00450}00450 }
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00451}00451 \textcolor{keyword}{template} <\textcolor{keyword}{typename} Obj>}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00452}\mbox{\hyperlink{namespacekblib_a5695499e50b8ae6a0308bd845774728f}{00452}} \textcolor{keyword}{using }\mbox{\hyperlink{structkblib_1_1poly__obj__traits}{move\_only\_traits}} = \mbox{\hyperlink{structkblib_1_1poly__obj__traits}{poly\_obj\_traits<Obj, construct\_type::move>}};}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00453}00453 \textcolor{keyword}{template} <\textcolor{keyword}{typename} Obj>}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00454}\mbox{\hyperlink{namespacekblib_a1f329c91b6941e2cc765d59100b34749}{00454}} \textcolor{keyword}{using }\mbox{\hyperlink{structkblib_1_1poly__obj__traits}{no\_move\_traits}} = \mbox{\hyperlink{structkblib_1_1poly__obj__traits}{poly\_obj\_traits<Obj, construct\_type::none>}};}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00455}00455 }
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00476}00476 \textcolor{keyword}{template} <\textcolor{keyword}{typename} Obj, std::size\_t Capacity = 0,}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00477}00477           \textcolor{keyword}{typename} Traits = \mbox{\hyperlink{structkblib_1_1poly__obj__traits}{poly\_obj\_traits<Obj>}}>}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00478}\mbox{\hyperlink{classkblib_1_1poly__obj}{00478}} \textcolor{keyword}{class }\mbox{\hyperlink{classkblib_1_1poly__obj}{poly\_obj}}}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00479}00479     : \textcolor{keyword}{private} \mbox{\hyperlink{structkblib_1_1detail__poly_1_1construct__conditional}{detail\_poly::construct\_conditional}}<detail\_poly::make\_ctype(}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00480}00480           Traits::copyable, Traits::movable, Traits::nothrow\_movable)>}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00481}00481     , \textcolor{keyword}{private} \mbox{\hyperlink{structkblib_1_1detail__poly_1_1erased__construct}{detail\_poly::erased\_construct}}<Traits> \{}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00482}00482  \textcolor{keyword}{private}:}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00483}00483    \textcolor{keyword}{using }\mbox{\hyperlink{structkblib_1_1detail__poly_1_1construct__conditional}{disabler}} = \mbox{\hyperlink{structkblib_1_1detail__poly_1_1construct__conditional}{detail\_poly::construct\_conditional}}<\mbox{\hyperlink{namespacekblib_1_1detail__poly_a2b36368b4dc8ff5498b7ae45839e47c5}{detail\_poly::make\_ctype}}(}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00484}00484        \mbox{\hyperlink{namespacekblib_1_1detail__poly_aa9dd6842a655495099bc36a29c947f3c}{Traits::copyable}}, \mbox{\hyperlink{namespacekblib_1_1detail__poly_aa3f1e557e58498f440cfb3a47edc8e69}{Traits::movable}}, \mbox{\hyperlink{namespacekblib_1_1detail__poly_ab9643d14f3057466208cd3c874114552}{Traits::nothrow\_movable}})>;}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00485}00485    \textcolor{keyword}{using }\mbox{\hyperlink{structkblib_1_1detail__poly_1_1erased__construct}{ops\_t}} = \mbox{\hyperlink{structkblib_1_1detail__poly_1_1erased__construct}{detail\_poly::erased\_construct<Traits>}};}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00486}00486 }
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00487}00487  \textcolor{keyword}{public}:}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00491}\mbox{\hyperlink{classkblib_1_1poly__obj_a2078c4589557ca8baef3249cf8ccdf48}{00491}}    \textcolor{keyword}{static} \textcolor{keyword}{constexpr} std::size\_t capacity}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00492}00492        = Capacity > 0 ? Capacity : Traits::default\_capacity;}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00493}00493 }
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00494}00494    \textcolor{keyword}{static\_assert}(capacity >= \textcolor{keyword}{sizeof}(Obj),}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00495}00495                  \textcolor{stringliteral}{"{}Capacity must be large enough for the object type."{}});}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00496}00496    \textcolor{keyword}{static\_assert}(not std::is\_array<Obj>::value,}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00497}00497                  \textcolor{stringliteral}{"{}poly\_obj of array type is disallowed."{}});}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00498}00498 }
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00499}\mbox{\hyperlink{classkblib_1_1poly__obj_a6b1d7acca03d5bdb88034c877cb6dac1}{00499}}    \textcolor{keyword}{using }\mbox{\hyperlink{classkblib_1_1poly__obj_a6b1d7acca03d5bdb88034c877cb6dac1}{base\_type}} = Obj;}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00500}\mbox{\hyperlink{classkblib_1_1poly__obj_aa3ff6d06058df91cc883cbe088a4f2dc}{00500}}    \textcolor{keyword}{using }\mbox{\hyperlink{classkblib_1_1poly__obj_aa3ff6d06058df91cc883cbe088a4f2dc}{traits\_type}} = Traits;}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00501}00501 }
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00506}00506 }
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00509}\mbox{\hyperlink{classkblib_1_1poly__obj_ad00e8ded81b242af899515f1fecedfea}{00509}}    \textcolor{keyword}{constexpr} \mbox{\hyperlink{classkblib_1_1poly__obj_ad00e8ded81b242af899515f1fecedfea}{poly\_obj}}() = \textcolor{keywordflow}{default};}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00513}\mbox{\hyperlink{classkblib_1_1poly__obj_ad875001a01246b38d1256a272497b7a1}{00513}}    \textcolor{keyword}{constexpr} \mbox{\hyperlink{classkblib_1_1poly__obj_ad875001a01246b38d1256a272497b7a1}{poly\_obj}}(std::nullptr\_t) noexcept}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00514}00514        : \mbox{\hyperlink{classkblib_1_1poly__obj}{poly\_obj}}() \{\}}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00522}\mbox{\hyperlink{classkblib_1_1poly__obj_a8c6394cbaba8ef978d56730d58c8992b}{00522}}    \textcolor{keyword}{constexpr} \mbox{\hyperlink{classkblib_1_1poly__obj_a8c6394cbaba8ef978d56730d58c8992b}{poly\_obj}}(\textcolor{keyword}{const} Obj\& obj)}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00523}00523        : ptr(new (data) Obj(obj)) \{\}}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00531}\mbox{\hyperlink{classkblib_1_1poly__obj_a57799fcc7def02da0428f4d2c9d40393}{00531}}    \textcolor{keyword}{constexpr} \mbox{\hyperlink{classkblib_1_1poly__obj_a57799fcc7def02da0428f4d2c9d40393}{poly\_obj}}(Obj\&\& obj) \textcolor{keyword}{noexcept}(\mbox{\hyperlink{namespacekblib_1_1detail__poly_ab9643d14f3057466208cd3c874114552}{Traits::nothrow\_movable}})}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00532}00532        : ptr(\textcolor{keyword}{new} (data) Obj(std::move(obj))) \{\}}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00533}00533 }
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00540}00540    \textcolor{keyword}{template} <\textcolor{keyword}{typename}... Args,}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00541}00541              \textcolor{keyword}{typename} \mbox{\hyperlink{namespacekblib_a366272ad8baad19be4ccf8128afb04a3}{std::enable\_if\_t}}<}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00542}00542                  std::is\_constructible<Obj, Args...>::value, \textcolor{keywordtype}{int}> = 0>}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00543}\mbox{\hyperlink{classkblib_1_1poly__obj_a2f9c210818dd1160029100fc3cad4547}{00543}}    \textcolor{keyword}{constexpr} \textcolor{keyword}{explicit} \mbox{\hyperlink{classkblib_1_1poly__obj_a2f9c210818dd1160029100fc3cad4547}{poly\_obj}}(\mbox{\hyperlink{structkblib_1_1fakestd_1_1in__place__t}{fakestd::in\_place\_t}}, Args\&\&... args) \textcolor{keyword}{noexcept}(}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00544}00544        std::is\_nothrow\_constructible<Obj, Args\&\&...>::value)}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00545}00545        : \mbox{\hyperlink{structkblib_1_1detail__poly_1_1erased__construct}{ops\_t}}(detail\_poly::make\_ops\_t<Obj, Traits>())}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00546}00546        , ptr(\textcolor{keyword}{new} (data) Obj(std::forward<Args>(args)...)) \{\}}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00547}00547 }
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00554}00554    \textcolor{keyword}{template} <\textcolor{keyword}{typename}... Args,}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00555}00555              \textcolor{keyword}{typename} \mbox{\hyperlink{namespacekblib_a366272ad8baad19be4ccf8128afb04a3}{std::enable\_if\_t}}<}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00556}00556                  std::is\_constructible<Obj, Args...>::value, \textcolor{keywordtype}{int}> = 0>}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00557}\mbox{\hyperlink{classkblib_1_1poly__obj_aeb7b77c87d2fa63c461039a86be8f651}{00557}}    \textcolor{keyword}{constexpr} \textcolor{keyword}{explicit} \mbox{\hyperlink{classkblib_1_1poly__obj_aeb7b77c87d2fa63c461039a86be8f651}{poly\_obj}}(\mbox{\hyperlink{structkblib_1_1in__place__agg__t}{kblib::in\_place\_agg\_t}}, Args\&\&... args) \textcolor{keyword}{noexcept}(}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00558}00558        std::is\_nothrow\_constructible<Obj, Args\&\&...>::value)}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00559}00559        : \mbox{\hyperlink{structkblib_1_1detail__poly_1_1erased__construct}{ops\_t}}(detail\_poly::make\_ops\_t<Obj, Traits>())}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00560}00560        , ptr(\textcolor{keyword}{new} (data) Obj\{std::forward<Args>(args)...\}) \{\}}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00561}00561 }
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00574}00574    \textcolor{keyword}{template} <\textcolor{keyword}{typename} U, \textcolor{keyword}{typename}... Args>}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00575}\mbox{\hyperlink{classkblib_1_1poly__obj_a52a4496de9d824572a7640a102bf8322}{00575}}    \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{static} \textcolor{keyword}{auto} \mbox{\hyperlink{classkblib_1_1poly__obj_a52a4496de9d824572a7640a102bf8322}{make}}(Args\&\&... args) \textcolor{keyword}{noexcept}(}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00576}00576        std::is\_nothrow\_constructible<U, Args\&\&...>::value) -\/> \mbox{\hyperlink{classkblib_1_1poly__obj}{poly\_obj}} \{}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00577}00577       \textcolor{keyword}{static\_assert}(\textcolor{keyword}{sizeof}(U) <= capacity,}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00578}00578                     \textcolor{stringliteral}{"{}U must fit inside of the inline capacity."{}});}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00579}00579       \textcolor{keyword}{static\_assert}(\textcolor{keyword}{alignof}(U) <= Traits::alignment,}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00580}00580                     \textcolor{stringliteral}{"{}U must be no more aligned than Traits::alignment"{}});}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00581}00581       \textcolor{keyword}{static\_assert}(std::is\_base\_of<Obj, U>::value}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00582}00582                         and std::is\_convertible<U*, Obj*>::value,}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00583}00583                     \textcolor{stringliteral}{"{}Obj must be an accessible base of Obj."{}});}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00584}00584       \textcolor{keyword}{static\_assert}(}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00585}00585           \mbox{\hyperlink{structkblib_1_1implies}{implies}}<\mbox{\hyperlink{namespacekblib_1_1detail__poly_aa9dd6842a655495099bc36a29c947f3c}{Traits::copyable}},}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00586}00586                   std::is\_copy\_constructible<U>::value>::value,}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00587}00587           \textcolor{stringliteral}{"{}U must be copy constructible if Traits::copyable is true."{}});}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00588}00588       \textcolor{keyword}{static\_assert}(}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00589}00589           \mbox{\hyperlink{structkblib_1_1implies}{implies<Traits::movable, std::is\_move\_constructible<U>::value}}>::value,}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00590}00590           \textcolor{stringliteral}{"{}U must be move constructible if Traits::movable is true."{}});}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00591}00591       \textcolor{keywordflow}{return} \{tag<U>\{\}, std::forward<Args>(args)...\};}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00592}00592    \}}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00593}00593 }
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00606}00606    \textcolor{keyword}{template} <\textcolor{keyword}{typename} U, \textcolor{keyword}{typename}... Args>}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00607}\mbox{\hyperlink{classkblib_1_1poly__obj_aa721a7ba8c2f32b9fe38177678f44bfa}{00607}}    \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{static} \textcolor{keyword}{auto} \mbox{\hyperlink{classkblib_1_1poly__obj_aa721a7ba8c2f32b9fe38177678f44bfa}{make\_aggregate}}(Args\&\&... args) \textcolor{keyword}{noexcept}(}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00608}00608        std::is\_nothrow\_constructible<U, Args\&\&...>::value) -\/> \mbox{\hyperlink{classkblib_1_1poly__obj}{poly\_obj}} \{}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00609}00609       \textcolor{keyword}{static\_assert}(\textcolor{keyword}{sizeof}(U) <= capacity,}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00610}00610                     \textcolor{stringliteral}{"{}U must fit inside of the inline capacity."{}});}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00611}00611       \textcolor{keyword}{static\_assert}(\textcolor{keyword}{alignof}(U) <= Traits::alignment,}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00612}00612                     \textcolor{stringliteral}{"{}U must be no more aligned than Traits::alignment"{}});}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00613}00613       \textcolor{keyword}{static\_assert}(std::is\_base\_of<Obj, U>::value}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00614}00614                         and std::is\_convertible<U*, Obj*>::value,}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00615}00615                     \textcolor{stringliteral}{"{}Obj must be an accessible base of Obj."{}});}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00616}00616       \textcolor{keyword}{static\_assert}(}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00617}00617           \mbox{\hyperlink{structkblib_1_1implies}{implies}}<\mbox{\hyperlink{namespacekblib_1_1detail__poly_aa9dd6842a655495099bc36a29c947f3c}{Traits::copyable}},}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00618}00618                   std::is\_copy\_constructible<U>::value>::value,}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00619}00619           \textcolor{stringliteral}{"{}U must be copy constructible if Traits::copyable is true."{}});}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00620}00620       \textcolor{keyword}{static\_assert}(}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00621}00621           \mbox{\hyperlink{structkblib_1_1implies}{implies<Traits::movable, std::is\_move\_constructible<U>::value}}>::value,}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00622}00622           \textcolor{stringliteral}{"{}U must be move constructible if Traits::movable is true."{}});}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00623}00623       \textcolor{keywordflow}{return} \{tag<U, true>\{\}, std::forward<Args>(args)...\};}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00624}00624    \}}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00626}00626 }
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00631}00631 }
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00638}\mbox{\hyperlink{classkblib_1_1poly__obj_a92b92aca22c1ae5e9d444c9e42204259}{00638}}    \textcolor{keyword}{constexpr} \mbox{\hyperlink{classkblib_1_1poly__obj_a92b92aca22c1ae5e9d444c9e42204259}{poly\_obj}}(\textcolor{keyword}{const} \mbox{\hyperlink{classkblib_1_1poly__obj}{poly\_obj}}\& other)}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00639}00639        : \mbox{\hyperlink{structkblib_1_1detail__poly_1_1construct__conditional}{disabler}}(other)}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00640}00640        , \mbox{\hyperlink{structkblib_1_1detail__poly_1_1erased__construct}{ops\_t}}(other) \{}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00641}00641       \textcolor{keywordflow}{if} (other.ptr) \{}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00642}00642          ptr = this-\/>\mbox{\hyperlink{namespacekblib_ac912dd210d34963da9bd40a1a6296308}{copy}}(data, other.ptr);}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00643}00643       \}}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00644}00644    \}}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00653}\mbox{\hyperlink{classkblib_1_1poly__obj_a85ca15204b2959816e2767d46ee996fb}{00653}}    \textcolor{keyword}{constexpr} \mbox{\hyperlink{classkblib_1_1poly__obj_a85ca15204b2959816e2767d46ee996fb}{poly\_obj}}(\mbox{\hyperlink{classkblib_1_1poly__obj}{poly\_obj}}\&\& other) \textcolor{keyword}{noexcept}(\mbox{\hyperlink{namespacekblib_1_1detail__poly_ab9643d14f3057466208cd3c874114552}{Traits::nothrow\_movable}})}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00654}00654        : \mbox{\hyperlink{structkblib_1_1detail__poly_1_1construct__conditional}{disabler}}(std::move(other))}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00655}00655        , \mbox{\hyperlink{structkblib_1_1detail__poly_1_1erased__construct}{ops\_t}}(std::move(other)) \{}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00656}00656       \textcolor{keywordflow}{if} (other.ptr) \{}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00657}00657          ptr = this-\/>\mbox{\hyperlink{namespacekblib_a2cc6d0e618d41f45deaaa5c6c357ed7aa3734a903022249b3010be1897042568e}{move}}(data, other.ptr);}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00658}00658       \}}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00659}00659    \}}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00660}00660 }
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00671}\mbox{\hyperlink{classkblib_1_1poly__obj_aa44bd038037183afab176e199871c066}{00671}}    \textcolor{keyword}{auto} \mbox{\hyperlink{classkblib_1_1poly__obj_aa44bd038037183afab176e199871c066}{operator=}}(\textcolor{keyword}{const} \mbox{\hyperlink{classkblib_1_1poly__obj}{poly\_obj}}\& other) \& -\/> \mbox{\hyperlink{classkblib_1_1poly__obj}{poly\_obj}}\& \{}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00672}00672       \textcolor{keywordflow}{if} (\textcolor{keyword}{this} == \&other) \{}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00673}00673          \textcolor{keywordflow}{return} *\textcolor{keyword}{this};}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00674}00674       \}}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00675}00675       clear();}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00676}00676       \textcolor{keyword}{static\_cast<}\mbox{\hyperlink{structkblib_1_1detail__poly_1_1erased__construct}{ops\_t}}\&\textcolor{keyword}{>}(*this) = other;}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00677}00677       \textcolor{keywordflow}{if} (other.ptr) \{}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00678}00678          ptr = this-\/>\mbox{\hyperlink{namespacekblib_ac912dd210d34963da9bd40a1a6296308}{copy}}(data, other.ptr);}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00679}00679       \}}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00680}00680       \textcolor{keywordflow}{return} *\textcolor{keyword}{this};}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00681}00681    \}}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00682}00682 }
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00693}\mbox{\hyperlink{classkblib_1_1poly__obj_a52044d8a5e01aea43470e42bb5f2438c}{00693}}    \textcolor{keyword}{auto} \mbox{\hyperlink{classkblib_1_1poly__obj_a52044d8a5e01aea43470e42bb5f2438c}{operator=}}(\mbox{\hyperlink{classkblib_1_1poly__obj}{poly\_obj}}\&\& other) \& \textcolor{keyword}{noexcept}(\mbox{\hyperlink{namespacekblib_1_1detail__poly_ab9643d14f3057466208cd3c874114552}{Traits::nothrow\_movable}})}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00694}00694        -\/> \mbox{\hyperlink{classkblib_1_1poly__obj}{poly\_obj}}\& \{}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00695}00695       \textcolor{keywordflow}{if} (\textcolor{keyword}{this} == \&other) \{}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00696}00696          \textcolor{keywordflow}{return} *\textcolor{keyword}{this};}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00697}00697       \}}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00698}00698       clear();}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00699}00699       \textcolor{keyword}{static\_cast<}\mbox{\hyperlink{structkblib_1_1detail__poly_1_1erased__construct}{ops\_t}}\&\textcolor{keyword}{>}(*this) = other;}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00700}00700       \textcolor{keywordflow}{if} (other.ptr) \{}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00701}00701          ptr = this-\/>\mbox{\hyperlink{namespacekblib_a2cc6d0e618d41f45deaaa5c6c357ed7aa3734a903022249b3010be1897042568e}{move}}(data, other.ptr);}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00702}00702       \}}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00703}00703       \textcolor{keywordflow}{return} *\textcolor{keyword}{this};}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00704}00704    \}}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00706}00706 }
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00712}\mbox{\hyperlink{classkblib_1_1poly__obj_ad4a570988c6bc362b4485d7e80adc0c3}{00712}}    \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{auto} \mbox{\hyperlink{classkblib_1_1poly__obj_ad4a570988c6bc362b4485d7e80adc0c3}{has\_value}}() const\& noexcept -\/> \textcolor{keywordtype}{bool} \{ \textcolor{keywordflow}{return} ptr; \}}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00713}00713 }
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00714}\mbox{\hyperlink{classkblib_1_1poly__obj_a8564868dfc2816e1f672e6c021f515da}{00714}}    \textcolor{keyword}{explicit} \textcolor{keyword}{operator} bool() const\& noexcept \{ \textcolor{keywordflow}{return} has\_value(); \}}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00716}00716 }
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00721}00721 }
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00724}\mbox{\hyperlink{classkblib_1_1poly__obj_af2a2a9fc9fffe8e76a2cf1ef1cd8fb18}{00724}}    \textcolor{keyword}{auto} \mbox{\hyperlink{classkblib_1_1poly__obj_af2a2a9fc9fffe8e76a2cf1ef1cd8fb18}{clear}}() noexcept -\/> \textcolor{keywordtype}{void} \{}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00725}00725       \textcolor{keywordflow}{if} (ptr) \{}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00726}00726          this-\/>destroy(ptr);}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00727}00727          ptr = \textcolor{keyword}{nullptr};}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00728}00728       \}}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00729}00729       \textcolor{keyword}{static\_cast<}\mbox{\hyperlink{structkblib_1_1detail__poly_1_1erased__construct}{ops\_t}}\&\textcolor{keyword}{>}(*this) = \{\};}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00730}00730    \}}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00731}00731 }
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00732}\mbox{\hyperlink{classkblib_1_1poly__obj_ac0f29d745e5cd252a32e6b3328ad5282}{00732}}    \mbox{\hyperlink{classkblib_1_1poly__obj_ac0f29d745e5cd252a32e6b3328ad5282}{\string~poly\_obj}}() noexcept \{}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00733}00733       \textcolor{keywordflow}{if} (ptr) \{}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00734}00734          this-\/>destroy(ptr);}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00735}00735       \}}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00736}00736    \}}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00738}00738 }
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00744}00744 }
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00754}\mbox{\hyperlink{classkblib_1_1poly__obj_a0714f3ae71d8ef6010da9fade6e2aeb3}{00754}}    \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{auto} \mbox{\hyperlink{classkblib_1_1poly__obj_a0714f3ae71d8ef6010da9fade6e2aeb3}{operator*}}() \& \textcolor{keyword}{noexcept} -\/> Obj\& \{ \textcolor{keywordflow}{return} *\mbox{\hyperlink{namespacekblib_a951945f1ed7d42562a7e6fa8cf8f0405}{get}}(); \}}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00765}\mbox{\hyperlink{classkblib_1_1poly__obj_aea0e85e6bb864599aafac44b707ce121}{00765}}    \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{auto} \mbox{\hyperlink{classkblib_1_1poly__obj_aea0e85e6bb864599aafac44b707ce121}{operator*}}() const\& noexcept -\/> const Obj\& \{}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00766}00766       \textcolor{keywordflow}{return} *\mbox{\hyperlink{namespacekblib_a951945f1ed7d42562a7e6fa8cf8f0405}{get}}();}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00767}00767    \}}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00778}\mbox{\hyperlink{classkblib_1_1poly__obj_a3ef16c67a7179c0cb807e2d7afb7d2d7}{00778}}    \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{auto} \mbox{\hyperlink{classkblib_1_1poly__obj_a3ef16c67a7179c0cb807e2d7afb7d2d7}{operator*}}() \&\& \textcolor{keyword}{noexcept}(\mbox{\hyperlink{namespacekblib_1_1detail__poly_ab9643d14f3057466208cd3c874114552}{Traits::nothrow\_movable}})}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00779}00779        -\/> Obj\&\& \{}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00780}00780       \textcolor{keywordflow}{return} std::move(*\mbox{\hyperlink{namespacekblib_a951945f1ed7d42562a7e6fa8cf8f0405}{get}}());}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00781}00781    \}}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00795}\mbox{\hyperlink{classkblib_1_1poly__obj_a5ddb65d83a010b1c466ce4777b24868f}{00795}}    \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{auto} \mbox{\hyperlink{classkblib_1_1poly__obj_a5ddb65d83a010b1c466ce4777b24868f}{operator*}}() const\&\& noexcept(Traits::\mbox{\hyperlink{namespacekblib_1_1detail__poly_ab9643d14f3057466208cd3c874114552}{nothrow\_movable}})}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00796}00796        -\/> const Obj\&\& \{}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00797}00797       \textcolor{keywordflow}{return} std::move(*\mbox{\hyperlink{namespacekblib_a951945f1ed7d42562a7e6fa8cf8f0405}{get}}());}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00798}00798    \}}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00799}00799 }
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00809}\mbox{\hyperlink{classkblib_1_1poly__obj_a491cce1508eb4e0b62822e28e86dd790}{00809}}    \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{auto} \mbox{\hyperlink{classkblib_1_1poly__obj_a491cce1508eb4e0b62822e28e86dd790}{get}}() \& \textcolor{keyword}{noexcept} -\/> Obj* \{ \textcolor{keywordflow}{return} ptr; \}}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00819}\mbox{\hyperlink{classkblib_1_1poly__obj_a017e68b5780bd59efdf64ea6ca1d2dda}{00819}}    \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{auto} \mbox{\hyperlink{classkblib_1_1poly__obj_a017e68b5780bd59efdf64ea6ca1d2dda}{get}}() const\& noexcept -\/> const Obj* \{ \textcolor{keywordflow}{return} ptr; \}}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00820}00820 }
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00830}\mbox{\hyperlink{classkblib_1_1poly__obj_aee7245515bb6a49247ae60d6a33e461a}{00830}}    \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{auto} \mbox{\hyperlink{classkblib_1_1poly__obj_aee7245515bb6a49247ae60d6a33e461a}{operator-\/>}}() \& \textcolor{keyword}{noexcept} -\/> Obj* \{ \textcolor{keywordflow}{return} ptr; \}}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00840}\mbox{\hyperlink{classkblib_1_1poly__obj_aa779092f365e6db35d64c02f115c614e}{00840}}    \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{auto} \mbox{\hyperlink{classkblib_1_1poly__obj_aa779092f365e6db35d64c02f115c614e}{operator-\/>}}() const\& noexcept -\/> const Obj* \{}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00841}00841       \textcolor{keywordflow}{return} ptr;}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00842}00842    \}}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00843}00843 }
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00854}00854    \textcolor{keyword}{template} <\textcolor{keyword}{typename}... Args>}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00855}\mbox{\hyperlink{classkblib_1_1poly__obj_ab7facea867076cd74cf7959d6fc5d0d8}{00855}}    \textcolor{keyword}{auto} \mbox{\hyperlink{classkblib_1_1poly__obj_ab7facea867076cd74cf7959d6fc5d0d8}{operator()}}(Args\&\&... args) \textcolor{keyword}{noexcept}(}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00856}00856        \mbox{\hyperlink{structkblib_1_1fakestd_1_1is__nothrow__invocable}{is\_nothrow\_invocable}}<Obj\&, Args\&\&...>::value)}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00857}00857        -\/> \mbox{\hyperlink{namespacekblib_1_1fakestd_a2641177fb1c17f887061308f2b8b6cae}{fakestd::invoke\_result\_t<Obj\&, Args\&\&...>}} \{}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00858}00858       \textcolor{keywordflow}{return} \mbox{\hyperlink{namespacekblib_a9b10acd2ddaea118b990e1177f626722}{kblib::invoke}}(*\mbox{\hyperlink{namespacekblib_a951945f1ed7d42562a7e6fa8cf8f0405}{get}}(), std::forward<Args>(args)...);}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00859}00859    \}}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00870}00870    \textcolor{keyword}{template} <\textcolor{keyword}{typename}... Args>}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00871}\mbox{\hyperlink{classkblib_1_1poly__obj_a72ce02181353cbe46c0cd5a7b19865fe}{00871}}    \textcolor{keyword}{auto} \mbox{\hyperlink{classkblib_1_1poly__obj_a72ce02181353cbe46c0cd5a7b19865fe}{operator()}}(Args\&\&... args) \textcolor{keyword}{const}}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00872}00872        \textcolor{keyword}{noexcept}(\mbox{\hyperlink{structkblib_1_1fakestd_1_1is__nothrow__invocable}{is\_nothrow\_invocable}}<\textcolor{keyword}{const} Obj\&, Args\&\&...>::value)}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00873}00873            -\/> \mbox{\hyperlink{namespacekblib_1_1fakestd_a2641177fb1c17f887061308f2b8b6cae}{fakestd::invoke\_result\_t<const Obj\&, Args\&\&...>}} \{}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00874}00874       \textcolor{keywordflow}{return} \mbox{\hyperlink{namespacekblib_a9b10acd2ddaea118b990e1177f626722}{kblib::invoke}}(*\mbox{\hyperlink{namespacekblib_a951945f1ed7d42562a7e6fa8cf8f0405}{get}}(), std::forward<Args>(args)...);}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00875}00875    \}}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00876}00876 }
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00880}00880    \textcolor{keyword}{template} <\textcolor{keyword}{typename} member\_type>}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00881}00881    \mbox{\hyperlink{namespacekblib_a366272ad8baad19be4ccf8128afb04a3}{enable\_if\_t<not std::is\_member\_function\_pointer<member\_type Obj::*>::value}},}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00882}00882                member\_type>\&}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00883}\mbox{\hyperlink{classkblib_1_1poly__obj_a1100219ad2f03bc8cb8349cf91582247}{00883}}    \mbox{\hyperlink{classkblib_1_1poly__obj_a1100219ad2f03bc8cb8349cf91582247}{operator-\/>*}}(member\_type Obj::*member) \& \textcolor{keyword}{noexcept} \{}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00884}00884       \textcolor{keywordflow}{return} \mbox{\hyperlink{namespacekblib_a951945f1ed7d42562a7e6fa8cf8f0405}{get}}()-\/>*member;}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00885}00885    \}}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00886}00886 }
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00890}00890    \textcolor{keyword}{template} <\textcolor{keyword}{typename} member\_type>}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00891}00891    \textcolor{keyword}{const} \mbox{\hyperlink{namespacekblib_a366272ad8baad19be4ccf8128afb04a3}{enable\_if\_t}}<}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00892}00892        not std::is\_member\_function\_pointer<member\_type Obj::*>::value,}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00893}00893        member\_type>\&}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00894}\mbox{\hyperlink{classkblib_1_1poly__obj_ae6dc1f6d4f305beb09807adec5b28da1}{00894}}    \mbox{\hyperlink{classkblib_1_1poly__obj_ae6dc1f6d4f305beb09807adec5b28da1}{operator-\/>*}}(member\_type Obj::*member) \textcolor{keyword}{const}\& \textcolor{keyword}{noexcept} \{}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00895}00895       \textcolor{keywordflow}{return} \mbox{\hyperlink{namespacekblib_a951945f1ed7d42562a7e6fa8cf8f0405}{get}}()-\/>*member;}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00896}00896    \}}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00897}00897 }
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00901}00901    \textcolor{keyword}{template} <\textcolor{keyword}{typename} member\_type>}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00902}00902    \mbox{\hyperlink{namespacekblib_a366272ad8baad19be4ccf8128afb04a3}{enable\_if\_t<not std::is\_member\_function\_pointer<member\_type Obj::*>::value}},}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00903}00903                member\_type>\&\&}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00904}\mbox{\hyperlink{classkblib_1_1poly__obj_a44060776051850000388639ff116d5a9}{00904}}    \mbox{\hyperlink{classkblib_1_1poly__obj_a44060776051850000388639ff116d5a9}{operator-\/>*}}(member\_type Obj::*member) \&\& \textcolor{keyword}{noexcept} \{}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00905}00905       \textcolor{keywordflow}{return} std::move(\mbox{\hyperlink{namespacekblib_a951945f1ed7d42562a7e6fa8cf8f0405}{get}}()-\/>*member);}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00906}00906    \}}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00907}00907 }
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00911}00911    \textcolor{keyword}{template} <\textcolor{keyword}{typename} member\_type>}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00912}00912    \textcolor{keyword}{const} \mbox{\hyperlink{namespacekblib_a366272ad8baad19be4ccf8128afb04a3}{enable\_if\_t}}<}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00913}00913        not std::is\_member\_function\_pointer<member\_type Obj::*>::value,}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00914}00914        member\_type>\&\&}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00915}\mbox{\hyperlink{classkblib_1_1poly__obj_ad505cb7c38be86bfee9252ca9abce3ff}{00915}}    \mbox{\hyperlink{classkblib_1_1poly__obj_ad505cb7c38be86bfee9252ca9abce3ff}{operator-\/>*}}(member\_type Obj::*member) \textcolor{keyword}{const}\&\& \textcolor{keyword}{noexcept} \{}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00916}00916       \textcolor{keywordflow}{return} std::move(\mbox{\hyperlink{namespacekblib_a951945f1ed7d42562a7e6fa8cf8f0405}{get}}()-\/>*member);}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00917}00917    \}}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00918}00918 }
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00923}00923    \textcolor{keyword}{template} <\textcolor{keyword}{typename} member\_type, \textcolor{keyword}{typename}... Args>}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00924}\mbox{\hyperlink{classkblib_1_1poly__obj_a47b8ca1658a5f04da7fcda285cad310a}{00924}}    \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{auto} \mbox{\hyperlink{classkblib_1_1poly__obj_a47b8ca1658a5f04da7fcda285cad310a}{operator-\/>*}}(}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00925}00925        member\_type (Obj::*member)(Args...)) \& \textcolor{keyword}{noexcept} \{}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00926}00926       \textcolor{keywordflow}{return} [member, value = \mbox{\hyperlink{namespacekblib_a951945f1ed7d42562a7e6fa8cf8f0405}{get}}()](Args... args) -\/> \textcolor{keyword}{decltype}(\textcolor{keyword}{auto}) \{}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00927}00927          \textcolor{keywordflow}{return} (value-\/>*member)(std::forward<Args>(args)...);}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00928}00928       \};}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00929}00929    \}}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00930}00930 }
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00935}00935    \textcolor{keyword}{template} <\textcolor{keyword}{typename} member\_type, \textcolor{keyword}{typename}... Args>}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00936}\mbox{\hyperlink{classkblib_1_1poly__obj_aa484b1617db09add6dd52ebbc8e748e5}{00936}}    \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{auto} \mbox{\hyperlink{classkblib_1_1poly__obj_aa484b1617db09add6dd52ebbc8e748e5}{operator-\/>*}}(member\_type (Obj::*member)(Args...)}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00937}00937                                         \textcolor{keyword}{const}) \& \textcolor{keyword}{noexcept} \{}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00938}00938       \textcolor{keywordflow}{return} [member, value = \mbox{\hyperlink{namespacekblib_a951945f1ed7d42562a7e6fa8cf8f0405}{get}}()](Args... args) -\/> \textcolor{keyword}{decltype}(\textcolor{keyword}{auto}) \{}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00939}00939          \textcolor{keywordflow}{return} (value-\/>*member)(std::forward<Args>(args)...);}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00940}00940       \};}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00941}00941    \}}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00942}00942 }
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00947}00947    \textcolor{keyword}{template} <\textcolor{keyword}{typename} member\_type, \textcolor{keyword}{typename}... Args>}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00948}\mbox{\hyperlink{classkblib_1_1poly__obj_ab5cd87130f164432e806a98073b98fa5}{00948}}    \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{auto} \mbox{\hyperlink{classkblib_1_1poly__obj_ab5cd87130f164432e806a98073b98fa5}{operator-\/>*}}(member\_type (Obj::*member)(Args...)}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00949}00949                                         \textcolor{keyword}{const}) const\& noexcept \{}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00950}00950       \textcolor{keywordflow}{return} [member, value = \mbox{\hyperlink{namespacekblib_a951945f1ed7d42562a7e6fa8cf8f0405}{get}}()](Args... args) -\/> \textcolor{keyword}{decltype}(\textcolor{keyword}{auto}) \{}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00951}00951          \textcolor{keywordflow}{return} (value-\/>*member)(std::forward<Args>(args)...);}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00952}00952       \};}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00953}00953    \}}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00954}00954 }
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00959}00959    \textcolor{keyword}{template} <\textcolor{keyword}{typename} member\_type, \textcolor{keyword}{typename}... Args>}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00960}\mbox{\hyperlink{classkblib_1_1poly__obj_ad6c81b0ba976695d825edbacd8cd9064}{00960}}    \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{auto} \mbox{\hyperlink{classkblib_1_1poly__obj_ad6c81b0ba976695d825edbacd8cd9064}{operator-\/>*}}(member\_type (Obj::*member)(Args...)}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00961}00961                                         \textcolor{keyword}{const}) \&\& \textcolor{keyword}{noexcept} \{}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00962}00962       \textcolor{keywordflow}{return} [member, value = \mbox{\hyperlink{namespacekblib_a951945f1ed7d42562a7e6fa8cf8f0405}{get}}()](Args... args) -\/> \textcolor{keyword}{decltype}(\textcolor{keyword}{auto}) \{}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00963}00963          \textcolor{keywordflow}{return} (value-\/>*member)(std::forward<Args>(args)...);}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00964}00964       \};}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00965}00965    \}}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00966}00966 }
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00971}00971    \textcolor{keyword}{template} <\textcolor{keyword}{typename} member\_type, \textcolor{keyword}{typename}... Args>}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00972}\mbox{\hyperlink{classkblib_1_1poly__obj_a4d66bd7ffbaba5611ec57322ed04c7b6}{00972}}    \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{auto} \mbox{\hyperlink{classkblib_1_1poly__obj_a4d66bd7ffbaba5611ec57322ed04c7b6}{operator-\/>*}}(}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00973}00973        member\_type (Obj::*member)(Args...) \&) \& \textcolor{keyword}{noexcept} \{}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00974}00974       \textcolor{keywordflow}{return} [member, value = \mbox{\hyperlink{namespacekblib_a951945f1ed7d42562a7e6fa8cf8f0405}{get}}()](Args... args) -\/> \textcolor{keyword}{decltype}(\textcolor{keyword}{auto}) \{}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00975}00975          \textcolor{keywordflow}{return} (value-\/>*member)(std::forward<Args>(args)...);}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00976}00976       \};}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00977}00977    \}}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00978}00978 }
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00983}00983    \textcolor{keyword}{template} <\textcolor{keyword}{typename} member\_type, \textcolor{keyword}{typename}... Args>}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00984}\mbox{\hyperlink{classkblib_1_1poly__obj_a2a90d6e595620cafcdebe0c8f4fd6c08}{00984}}    \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{auto} \mbox{\hyperlink{classkblib_1_1poly__obj_a2a90d6e595620cafcdebe0c8f4fd6c08}{operator-\/>*}}(member\_type (Obj::*member)(Args...)}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00985}00985                                         \textcolor{keyword}{const}\&) \& \textcolor{keyword}{noexcept} \{}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00986}00986       \textcolor{keywordflow}{return} [member, value = \mbox{\hyperlink{namespacekblib_a951945f1ed7d42562a7e6fa8cf8f0405}{get}}()](Args... args) -\/> \textcolor{keyword}{decltype}(\textcolor{keyword}{auto}) \{}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00987}00987          \textcolor{keywordflow}{return} (value-\/>*member)(std::forward<Args>(args)...);}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00988}00988       \};}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00989}00989    \}}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00990}00990 }
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00995}00995    \textcolor{keyword}{template} <\textcolor{keyword}{typename} member\_type, \textcolor{keyword}{typename}... Args>}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00996}\mbox{\hyperlink{classkblib_1_1poly__obj_a47f9a09f551b21bb03610d8f41ae346c}{00996}}    \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{auto} \mbox{\hyperlink{classkblib_1_1poly__obj_a47f9a09f551b21bb03610d8f41ae346c}{operator-\/>*}}(member\_type (Obj::*member)(Args...)}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00997}00997                                         \textcolor{keyword}{const}\&) const\& noexcept \{}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00998}00998       \textcolor{keywordflow}{return} [member, value = \mbox{\hyperlink{namespacekblib_a951945f1ed7d42562a7e6fa8cf8f0405}{get}}()](Args... args) -\/> \textcolor{keyword}{decltype}(\textcolor{keyword}{auto}) \{}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l00999}00999          \textcolor{keywordflow}{return} (value-\/>*member)(std::forward<Args>(args)...);}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l01000}01000       \};}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l01001}01001    \}}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l01002}01002 }
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l01007}01007    \textcolor{keyword}{template} <\textcolor{keyword}{typename} member\_type, \textcolor{keyword}{typename}... Args>}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l01008}\mbox{\hyperlink{classkblib_1_1poly__obj_ad37345177103e39fb75a95239e2fd739}{01008}}    \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{auto} \mbox{\hyperlink{classkblib_1_1poly__obj_ad37345177103e39fb75a95239e2fd739}{operator-\/>*}}(member\_type (Obj::*member)(Args...)}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l01009}01009                                     \&\&) \&\& \textcolor{keyword}{noexcept} \{}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l01010}01010       \textcolor{keywordflow}{return} [member, value = \mbox{\hyperlink{namespacekblib_a951945f1ed7d42562a7e6fa8cf8f0405}{get}}()](Args... args) -\/> \textcolor{keyword}{decltype}(\textcolor{keyword}{auto}) \{}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l01011}01011          \textcolor{keywordflow}{return} (std::move(*value).*member)(std::forward<Args>(args)...);}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l01012}01012       \};}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l01013}01013    \}}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l01014}01014 }
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l01019}01019    \textcolor{keyword}{template} <\textcolor{keyword}{typename} member\_type, \textcolor{keyword}{typename}... Args>}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l01020}\mbox{\hyperlink{classkblib_1_1poly__obj_aee7dd1b5d899076a4fb444d1b50a7d83}{01020}}    \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{auto} \mbox{\hyperlink{classkblib_1_1poly__obj_aee7dd1b5d899076a4fb444d1b50a7d83}{operator-\/>*}}(member\_type (Obj::*member)(Args...)}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l01021}01021                                         \textcolor{keyword}{const}\&) \&\& \textcolor{keyword}{noexcept} \{}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l01022}01022       \textcolor{keywordflow}{return} [member, value = \mbox{\hyperlink{namespacekblib_a951945f1ed7d42562a7e6fa8cf8f0405}{get}}()](Args... args) -\/> \textcolor{keyword}{decltype}(\textcolor{keyword}{auto}) \{}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l01023}01023          \textcolor{keywordflow}{return} (value-\/>*member)(std::forward<Args>(args)...);}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l01024}01024       \};}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l01025}01025    \}}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l01026}01026 }
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l01031}01031    \textcolor{keyword}{template} <\textcolor{keyword}{typename} member\_type, \textcolor{keyword}{typename}... Args>}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l01032}\mbox{\hyperlink{classkblib_1_1poly__obj_aef3ff61c8e27445183e3bfcec41f70c5}{01032}}    \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{auto} \mbox{\hyperlink{classkblib_1_1poly__obj_aef3ff61c8e27445183e3bfcec41f70c5}{operator-\/>*}}(}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l01033}01033        member\_type (Obj::*member)(Args...)) \&\& \textcolor{keyword}{noexcept} \{}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l01034}01034       \textcolor{keywordflow}{return} [member, value = \mbox{\hyperlink{namespacekblib_a951945f1ed7d42562a7e6fa8cf8f0405}{get}}()](Args... args) -\/> \textcolor{keyword}{decltype}(\textcolor{keyword}{auto}) \{}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l01035}01035          \textcolor{keywordflow}{return} (value-\/>*member)(std::forward<Args>(args)...);}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l01036}01036       \};}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l01037}01037    \}}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l01038}01038 }
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l01043}01043    \textcolor{keyword}{template} <\textcolor{keyword}{typename} member\_type, \textcolor{keyword}{typename}... Args>}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l01044}\mbox{\hyperlink{classkblib_1_1poly__obj_a0187a9ae8fdda053237701f4617e0120}{01044}}    \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{auto} \mbox{\hyperlink{classkblib_1_1poly__obj_a0187a9ae8fdda053237701f4617e0120}{operator-\/>*}}(member\_type (Obj::*member)(Args...)}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l01045}01045                                         \textcolor{keyword}{const}\&\&) \&\& \textcolor{keyword}{noexcept} \{}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l01046}01046       \textcolor{keywordflow}{return} [member, value = \mbox{\hyperlink{namespacekblib_a951945f1ed7d42562a7e6fa8cf8f0405}{get}}()](Args... args) -\/> \textcolor{keyword}{decltype}(\textcolor{keyword}{auto}) \{}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l01047}01047          \textcolor{keywordflow}{return} (std::move(*value).*member)(std::forward<Args>(args)...);}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l01048}01048       \};}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l01049}01049    \}}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l01050}01050 }
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l01055}01055    \textcolor{keyword}{template} <\textcolor{keyword}{typename} member\_type, \textcolor{keyword}{typename}... Args>}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l01056}\mbox{\hyperlink{classkblib_1_1poly__obj_a9a83ebad41b9ddbacfcfc5a69824bcee}{01056}}    \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{auto} \mbox{\hyperlink{classkblib_1_1poly__obj_a9a83ebad41b9ddbacfcfc5a69824bcee}{operator-\/>*}}(member\_type (Obj::*member)(Args...)}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l01057}01057                                         \textcolor{keyword}{const}\&\&) const\&\& noexcept \{}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l01058}01058       \textcolor{keywordflow}{return} [member, value = \mbox{\hyperlink{namespacekblib_a951945f1ed7d42562a7e6fa8cf8f0405}{get}}()](Args... args) -\/> \textcolor{keyword}{decltype}(\textcolor{keyword}{auto}) \{}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l01059}01059          \textcolor{keywordflow}{return} (std::move(*value).*member)(std::forward<Args>(args)...);}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l01060}01060       \};}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l01061}01061    \}}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l01062}01062 }
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l01063}01063  \textcolor{keyword}{private}:}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l01064}01064    \textcolor{keyword}{alignas}(Traits::alignment) \textcolor{keywordtype}{byte} data[capacity]\{\};}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l01065}01065    Obj* ptr\{\};}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l01066}01066 }
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l01067}01067    \textcolor{keyword}{template} <\textcolor{keyword}{typename} U, \textcolor{keywordtype}{bool} = false>}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l01068}01068    \textcolor{keyword}{struct }\mbox{\hyperlink{structtag}{tag}} \{\};}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l01069}01069 }
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l01070}01070    \textcolor{keyword}{template} <\textcolor{keyword}{typename} U, \textcolor{keyword}{typename}... Args>}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l01071}01071    poly\_obj(\mbox{\hyperlink{structtag}{tag<U>}}, Args\&\&... args) \textcolor{keyword}{noexcept}(}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l01072}01072        std::is\_nothrow\_constructible<U, Args\&\&...>::value)}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l01073}01073        : ops\_t(detail\_poly::make\_ops\_t<U, Traits>())}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l01074}01074        , ptr(\textcolor{keyword}{new} (data) U(std::forward<Args>(args)...)) \{\}}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l01075}01075 }
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l01076}01076    \textcolor{keyword}{template} <\textcolor{keyword}{typename} U, \textcolor{keyword}{typename}... Args>}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l01077}01077    poly\_obj(\mbox{\hyperlink{structtag}{tag<U, true>}}, Args\&\&... args) \textcolor{keyword}{noexcept}(}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l01078}01078        std::is\_nothrow\_constructible<U, Args\&\&...>::value)}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l01079}01079        : ops\_t(detail\_poly::make\_ops\_t<U, Traits>())}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l01080}01080        , ptr(\textcolor{keyword}{new} (data) U\{std::forward<Args>(args)...\}) \{\}}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l01081}01081 \};}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l01082}01082 }
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l01083}01083 \textcolor{keyword}{template} <\textcolor{keywordtype}{bool} warn>}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l01084}\mbox{\hyperlink{namespacekblib_a377adf58727d546906018e9e2675b98c}{01084}} \textcolor{keyword}{constexpr} \textcolor{keyword}{auto} \mbox{\hyperlink{namespacekblib_a377adf58727d546906018e9e2675b98c}{poly\_warn\_if}}() -\/> std::nullptr\_t \{}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l01085}01085    \textcolor{keywordflow}{return} \{\};}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l01086}01086 \}}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l01087}01087 \textcolor{keyword}{template} <>}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l01088}01088 [[deprecated(}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l01089}01089     \textcolor{stringliteral}{"{}make\_poly\_obj<T, D, Capacity>(): Specifying capacity with this "{}}}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l01090}01090     \textcolor{stringliteral}{"{}API is error-\/prone, consider "{}}}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l01091}\mbox{\hyperlink{namespacekblib_a500de2a9e580338a753636936fd7d533}{01091}}     \textcolor{stringliteral}{"{}using a type alias instead to avoid repetition."{}})]] \textcolor{keyword}{constexpr} \textcolor{keyword}{inline} \textcolor{keyword}{auto}}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l01092}01092 \mbox{\hyperlink{namespacekblib_a500de2a9e580338a753636936fd7d533}{poly\_warn\_if<true>}}() -\/> std::nullptr\_t \{}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l01093}01093    \textcolor{keywordflow}{return} \{\};}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l01094}01094 \}}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l01095}01095 }
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l01100}01100 \textcolor{keyword}{template} <\textcolor{keyword}{typename} T, \textcolor{keyword}{typename} D = T, std::size\_t Capacity = \textcolor{keyword}{sizeof}(D),}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l01101}01101           \textcolor{keyword}{typename} Traits = poly\_obj\_traits<T>, \textcolor{keyword}{typename}... Args>}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l01102}\mbox{\hyperlink{classkblib_1_1poly__obj_ab278276b4bf1afaa2a59d73a16741ea6}{01102}} \mbox{\hyperlink{tdecl_8h_a7f62d0731631a0e7675f45924b7f5ea0}{KBLIB\_NODISCARD}} \textcolor{keyword}{auto} \mbox{\hyperlink{classkblib_1_1poly__obj_ab278276b4bf1afaa2a59d73a16741ea6}{make\_poly\_obj}}(}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l01103}01103     Args\&\&... args,}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l01104}01104     std::nullptr\_t = \mbox{\hyperlink{namespacekblib_a377adf58727d546906018e9e2675b98c}{poly\_warn\_if}}<(Capacity != \textcolor{keyword}{sizeof}(D)}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l01105}01105                                    and Capacity > Traits::default\_capacity)>())}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l01106}01106     -\/> \mbox{\hyperlink{classkblib_1_1poly__obj}{poly\_obj}}<T, \mbox{\hyperlink{namespacekblib_1_1nums_a64067ecc4167ce1cfe32860ef5c1dc47}{std::max}}(Capacity, Traits::default\_capacity), Traits> \{}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l01107}01107    \textcolor{keywordflow}{return} \mbox{\hyperlink{classkblib_1_1poly__obj}{poly\_obj}}<T, \mbox{\hyperlink{namespacekblib_1_1nums_a64067ecc4167ce1cfe32860ef5c1dc47}{std::max}}(Capacity, Traits::default\_capacity),}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l01108}01108                    Traits>::template make<D>(std::forward<Args>(args)...);}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l01109}01109 \}}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l01110}01110 }
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l01111}01111 \} \textcolor{comment}{// namespace KBLIB\_NS}}
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l01112}01112 }
\DoxyCodeLine{\Hypertarget{poly__obj_8h_source_l01113}01113 \textcolor{preprocessor}{\#endif }\textcolor{comment}{// POLY\_OBJ\_H}}

\end{DoxyCode}
