\hypertarget{namespacekblib_1_1detail__poly}{}\doxysection{kblib\+::detail\+\_\+poly Namespace Reference}
\label{namespacekblib_1_1detail__poly}\index{kblib::detail\_poly@{kblib::detail\_poly}}


Implementation details for \mbox{\hyperlink{classkblib_1_1poly__obj}{poly\+\_\+obj}}.  


\doxysubsection*{Classes}
\begin{DoxyCompactItemize}
\item 
struct \mbox{\hyperlink{structkblib_1_1detail__poly_1_1construct__conditional}{construct\+\_\+conditional}}
\item 
struct \mbox{\hyperlink{structkblib_1_1detail__poly_1_1construct__conditional_3_01construct__type_1_1both_01_4}{construct\+\_\+conditional$<$ construct\+\_\+type\+::both $>$}}
\item 
struct \mbox{\hyperlink{structkblib_1_1detail__poly_1_1construct__conditional_3_01construct__type_1_1both__throw_01_4}{construct\+\_\+conditional$<$ construct\+\_\+type\+::both\+\_\+throw $>$}}
\item 
struct \mbox{\hyperlink{structkblib_1_1detail__poly_1_1construct__conditional_3_01construct__type_1_1copy__only_01_4}{construct\+\_\+conditional$<$ construct\+\_\+type\+::copy\+\_\+only $>$}}
\item 
struct \mbox{\hyperlink{structkblib_1_1detail__poly_1_1construct__conditional_3_01construct__type_1_1move_01_4}{construct\+\_\+conditional$<$ construct\+\_\+type\+::move $>$}}
\item 
struct \mbox{\hyperlink{structkblib_1_1detail__poly_1_1construct__conditional_3_01construct__type_1_1none_01_4}{construct\+\_\+conditional$<$ construct\+\_\+type\+::none $>$}}
\item 
struct \mbox{\hyperlink{structkblib_1_1detail__poly_1_1construct__conditional_3_01construct__type_1_1throw__move_01_4}{construct\+\_\+conditional$<$ construct\+\_\+type\+::throw\+\_\+move $>$}}
\item 
struct \mbox{\hyperlink{structkblib_1_1detail__poly_1_1erased__construct}{erased\+\_\+construct}}
\item 
struct \mbox{\hyperlink{structkblib_1_1detail__poly_1_1erased__hash__t}{erased\+\_\+hash\+\_\+t}}
\item 
struct \mbox{\hyperlink{structkblib_1_1detail__poly_1_1erased__hash__t_3_01_t_00_01void__t_3_01fakestd_1_1invoke__resulte0f114b0d28ead89999e6027fb1e55a8}{erased\+\_\+hash\+\_\+t$<$ T, void\+\_\+t$<$ fakestd\+::invoke\+\_\+result\+\_\+t$<$ std\+::hash$<$ T $>$, T $>$ $>$ $>$}}
\item 
struct \mbox{\hyperlink{structkblib_1_1detail__poly_1_1extract__derived__size}{extract\+\_\+derived\+\_\+size}}
\item 
struct \mbox{\hyperlink{structkblib_1_1detail__poly_1_1extract__derived__size_3_01_t_00_01void__if__t_3_07_t_1_1max__der728deceb0d3c42387b62a9cae41666e5}{extract\+\_\+derived\+\_\+size$<$ T, void\+\_\+if\+\_\+t$<$(\+T\+::max\+\_\+derived\+\_\+size $>$ sizeof(\+T))$>$ $>$}}
\item 
struct \mbox{\hyperlink{structkblib_1_1detail__poly_1_1kblib__erased__hash__t}{kblib\+\_\+erased\+\_\+hash\+\_\+t}}
\item 
struct \mbox{\hyperlink{structkblib_1_1detail__poly_1_1kblib__erased__hash__t_3_01_t_00_01void__t_3_01fakestd_1_1invoke_55adc4f6ef833cf6a377ac3d9da5a8e3}{kblib\+\_\+erased\+\_\+hash\+\_\+t$<$ T, void\+\_\+t$<$ fakestd\+::invoke\+\_\+result\+\_\+t$<$ std\+::hash$<$ T $>$, T $>$ $>$ $>$}}
\end{DoxyCompactItemize}
\doxysubsection*{Functions}
\begin{DoxyCompactItemize}
\item 
constexpr auto \mbox{\hyperlink{namespacekblib_1_1detail__poly_aa9dd6842a655495099bc36a29c947f3c}{copyable}} (\mbox{\hyperlink{namespacekblib_a2cc6d0e618d41f45deaaa5c6c357ed7a}{construct\+\_\+type}} type) noexcept -\/$>$ bool
\item 
constexpr auto \mbox{\hyperlink{namespacekblib_1_1detail__poly_aa3f1e557e58498f440cfb3a47edc8e69}{movable}} (\mbox{\hyperlink{namespacekblib_a2cc6d0e618d41f45deaaa5c6c357ed7a}{construct\+\_\+type}} type) noexcept -\/$>$ bool
\item 
constexpr auto \mbox{\hyperlink{namespacekblib_1_1detail__poly_ab9643d14f3057466208cd3c874114552}{nothrow\+\_\+movable}} (\mbox{\hyperlink{namespacekblib_a2cc6d0e618d41f45deaaa5c6c357ed7a}{construct\+\_\+type}} type) noexcept -\/$>$ bool
\item 
constexpr auto \mbox{\hyperlink{namespacekblib_1_1detail__poly_a2b36368b4dc8ff5498b7ae45839e47c5}{make\+\_\+ctype}} (bool \mbox{\hyperlink{namespacekblib_1_1detail__poly_aa9dd6842a655495099bc36a29c947f3c}{copyable}}, bool \mbox{\hyperlink{namespacekblib_1_1detail__poly_aa3f1e557e58498f440cfb3a47edc8e69}{movable}}, bool \mbox{\hyperlink{namespacekblib_1_1detail__poly_ab9643d14f3057466208cd3c874114552}{nothrow\+\_\+movable}}) -\/$>$ \mbox{\hyperlink{namespacekblib_a2cc6d0e618d41f45deaaa5c6c357ed7a}{construct\+\_\+type}}
\item 
{\footnotesize template$<$typename T , typename Traits $>$ }\\auto \mbox{\hyperlink{namespacekblib_1_1detail__poly_ae72ac6a24753c923d2db4b7559718bec}{make\+\_\+ops\+\_\+t}} () noexcept -\/$>$ \mbox{\hyperlink{structkblib_1_1detail__poly_1_1erased__construct}{erased\+\_\+construct}}$<$ Traits $>$
\end{DoxyCompactItemize}
\doxysubsection*{Variables}
\begin{DoxyCompactItemize}
\item 
{\footnotesize template$<$typename T $>$ }\\constexpr \mbox{\hyperlink{namespacekblib_a2cc6d0e618d41f45deaaa5c6c357ed7a}{construct\+\_\+type}} \mbox{\hyperlink{namespacekblib_1_1detail__poly_a61756f447c8151e8a8497341f0109885}{construct\+\_\+traits}}
\end{DoxyCompactItemize}


\doxysubsection{Detailed Description}
Implementation details for \mbox{\hyperlink{classkblib_1_1poly__obj}{poly\+\_\+obj}}. 

\doxysubsection{Function Documentation}
\mbox{\Hypertarget{namespacekblib_1_1detail__poly_aa9dd6842a655495099bc36a29c947f3c}\label{namespacekblib_1_1detail__poly_aa9dd6842a655495099bc36a29c947f3c}} 
\index{kblib::detail\_poly@{kblib::detail\_poly}!copyable@{copyable}}
\index{copyable@{copyable}!kblib::detail\_poly@{kblib::detail\_poly}}
\doxysubsubsection{\texorpdfstring{copyable()}{copyable()}}
{\footnotesize\ttfamily constexpr auto kblib\+::detail\+\_\+poly\+::copyable (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{namespacekblib_a2cc6d0e618d41f45deaaa5c6c357ed7a}{construct\+\_\+type}}}]{type }\end{DoxyParamCaption}) -\/$>$ bool \hspace{0.3cm}{\ttfamily [constexpr]}, {\ttfamily [noexcept]}}



Definition at line \mbox{\hyperlink{poly__obj_8h_source_l00072}{72}} of file \mbox{\hyperlink{poly__obj_8h_source}{poly\+\_\+obj.\+h}}.

\mbox{\Hypertarget{namespacekblib_1_1detail__poly_a2b36368b4dc8ff5498b7ae45839e47c5}\label{namespacekblib_1_1detail__poly_a2b36368b4dc8ff5498b7ae45839e47c5}} 
\index{kblib::detail\_poly@{kblib::detail\_poly}!make\_ctype@{make\_ctype}}
\index{make\_ctype@{make\_ctype}!kblib::detail\_poly@{kblib::detail\_poly}}
\doxysubsubsection{\texorpdfstring{make\_ctype()}{make\_ctype()}}
{\footnotesize\ttfamily constexpr auto kblib\+::detail\+\_\+poly\+::make\+\_\+ctype (\begin{DoxyParamCaption}\item[{bool}]{copyable,  }\item[{bool}]{movable,  }\item[{bool}]{nothrow\+\_\+movable }\end{DoxyParamCaption}) -\/$>$ \mbox{\hyperlink{namespacekblib_a2cc6d0e618d41f45deaaa5c6c357ed7a}{construct\+\_\+type}} \hspace{0.3cm}{\ttfamily [constexpr]}}



Definition at line \mbox{\hyperlink{poly__obj_8h_source_l00086}{86}} of file \mbox{\hyperlink{poly__obj_8h_source}{poly\+\_\+obj.\+h}}.

\mbox{\Hypertarget{namespacekblib_1_1detail__poly_ae72ac6a24753c923d2db4b7559718bec}\label{namespacekblib_1_1detail__poly_ae72ac6a24753c923d2db4b7559718bec}} 
\index{kblib::detail\_poly@{kblib::detail\_poly}!make\_ops\_t@{make\_ops\_t}}
\index{make\_ops\_t@{make\_ops\_t}!kblib::detail\_poly@{kblib::detail\_poly}}
\doxysubsubsection{\texorpdfstring{make\_ops\_t()}{make\_ops\_t()}}
{\footnotesize\ttfamily template$<$typename T , typename Traits $>$ \\
auto kblib\+::detail\+\_\+poly\+::make\+\_\+ops\+\_\+t (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) -\/$>$ \mbox{\hyperlink{structkblib_1_1detail__poly_1_1erased__construct}{erased\+\_\+construct}}$<$Traits$>$ \hspace{0.3cm}{\ttfamily [noexcept]}}



Definition at line \mbox{\hyperlink{poly__obj_8h_source_l00220}{220}} of file \mbox{\hyperlink{poly__obj_8h_source}{poly\+\_\+obj.\+h}}.

\mbox{\Hypertarget{namespacekblib_1_1detail__poly_aa3f1e557e58498f440cfb3a47edc8e69}\label{namespacekblib_1_1detail__poly_aa3f1e557e58498f440cfb3a47edc8e69}} 
\index{kblib::detail\_poly@{kblib::detail\_poly}!movable@{movable}}
\index{movable@{movable}!kblib::detail\_poly@{kblib::detail\_poly}}
\doxysubsubsection{\texorpdfstring{movable()}{movable()}}
{\footnotesize\ttfamily constexpr auto kblib\+::detail\+\_\+poly\+::movable (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{namespacekblib_a2cc6d0e618d41f45deaaa5c6c357ed7a}{construct\+\_\+type}}}]{type }\end{DoxyParamCaption}) -\/$>$ bool \hspace{0.3cm}{\ttfamily [constexpr]}, {\ttfamily [noexcept]}}



Definition at line \mbox{\hyperlink{poly__obj_8h_source_l00076}{76}} of file \mbox{\hyperlink{poly__obj_8h_source}{poly\+\_\+obj.\+h}}.

\mbox{\Hypertarget{namespacekblib_1_1detail__poly_ab9643d14f3057466208cd3c874114552}\label{namespacekblib_1_1detail__poly_ab9643d14f3057466208cd3c874114552}} 
\index{kblib::detail\_poly@{kblib::detail\_poly}!nothrow\_movable@{nothrow\_movable}}
\index{nothrow\_movable@{nothrow\_movable}!kblib::detail\_poly@{kblib::detail\_poly}}
\doxysubsubsection{\texorpdfstring{nothrow\_movable()}{nothrow\_movable()}}
{\footnotesize\ttfamily constexpr auto kblib\+::detail\+\_\+poly\+::nothrow\+\_\+movable (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{namespacekblib_a2cc6d0e618d41f45deaaa5c6c357ed7a}{construct\+\_\+type}}}]{type }\end{DoxyParamCaption}) -\/$>$ bool \hspace{0.3cm}{\ttfamily [constexpr]}, {\ttfamily [noexcept]}}



Definition at line \mbox{\hyperlink{poly__obj_8h_source_l00080}{80}} of file \mbox{\hyperlink{poly__obj_8h_source}{poly\+\_\+obj.\+h}}.



\doxysubsection{Variable Documentation}
\mbox{\Hypertarget{namespacekblib_1_1detail__poly_a61756f447c8151e8a8497341f0109885}\label{namespacekblib_1_1detail__poly_a61756f447c8151e8a8497341f0109885}} 
\index{kblib::detail\_poly@{kblib::detail\_poly}!construct\_traits@{construct\_traits}}
\index{construct\_traits@{construct\_traits}!kblib::detail\_poly@{kblib::detail\_poly}}
\doxysubsubsection{\texorpdfstring{construct\_traits}{construct\_traits}}
{\footnotesize\ttfamily template$<$typename T $>$ \\
constexpr \mbox{\hyperlink{namespacekblib_a2cc6d0e618d41f45deaaa5c6c357ed7a}{construct\+\_\+type}} kblib\+::detail\+\_\+poly\+::construct\+\_\+traits\hspace{0.3cm}{\ttfamily [constexpr]}}

{\bfseries Initial value\+:}
\begin{DoxyCode}{0}
\DoxyCodeLine{= construct\_type::copy\_only* std::is\_copy\_constructible<T>::value}
\DoxyCodeLine{         | construct\_type::move* std::is\_move\_constructible<T>::value}
\DoxyCodeLine{         | construct\_type::throw\_move*(}
\DoxyCodeLine{             std::is\_move\_constructible<T>::value}
\DoxyCodeLine{             \& not std::is\_nothrow\_move\_constructible<T>::value)}

\end{DoxyCode}


Definition at line \mbox{\hyperlink{poly__obj_8h_source_l00176}{176}} of file \mbox{\hyperlink{poly__obj_8h_source}{poly\+\_\+obj.\+h}}.

