\hypertarget{structkblib_1_1_f_n_v__hash_3_01_container_00_01void__if__t_3_01value__detected_3_01_container_03edc853b45f899ddef9c1c481777ad66}{}\section{kblib\+:\+:F\+N\+V\+\_\+hash$<$ Container, void\+\_\+if\+\_\+t$<$ value\+\_\+detected$<$ Container $>$\+:\+:value \&\&is\+\_\+hashable$<$ typename Container\+:\+:value\+\_\+type $>$\+:\+:value \&\&!hash\+\_\+detected$<$ Container $>$\+:\+:value \&\&!(is\+\_\+contiguous$<$ Container $>$\+:\+:value \&\&is\+\_\+trivially\+\_\+hashable$<$ typename Container\+:\+:value\+\_\+type $>$\+:\+:value)$>$ $>$ Struct Template Reference}
\label{structkblib_1_1_f_n_v__hash_3_01_container_00_01void__if__t_3_01value__detected_3_01_container_03edc853b45f899ddef9c1c481777ad66}\index{kblib\+::\+F\+N\+V\+\_\+hash$<$ Container, void\+\_\+if\+\_\+t$<$ value\+\_\+detected$<$ Container $>$\+::value \&\&is\+\_\+hashable$<$ typename Container\+::value\+\_\+type $>$\+::value \&\&"!hash\+\_\+detected$<$ Container $>$\+::value \&\&"!(is\+\_\+contiguous$<$ Container $>$\+::value \&\&is\+\_\+trivially\+\_\+hashable$<$ typename Container\+::value\+\_\+type $>$\+::value)$>$ $>$@{kblib\+::\+F\+N\+V\+\_\+hash$<$ Container, void\+\_\+if\+\_\+t$<$ value\+\_\+detected$<$ Container $>$\+::value \&\&is\+\_\+hashable$<$ typename Container\+::value\+\_\+type $>$\+::value \&\&"!hash\+\_\+detected$<$ Container $>$\+::value \&\&"!(is\+\_\+contiguous$<$ Container $>$\+::value \&\&is\+\_\+trivially\+\_\+hashable$<$ typename Container\+::value\+\_\+type $>$\+::value)$>$ $>$}}


Container hasher, for non-\/trivial elements (or non-\/contiguous storage)  




{\ttfamily \#include $<$simple.\+h$>$}

\subsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item 
constexpr std\+::size\+\_\+t \hyperlink{structkblib_1_1_f_n_v__hash_3_01_container_00_01void__if__t_3_01value__detected_3_01_container_03edc853b45f899ddef9c1c481777ad66_a9ea972541e1059421f66221a0ab63b43}{operator()} (const Container \&key, std\+::size\+\_\+t offset=\hyperlink{structkblib_1_1fnv_1_1fnv__offset}{fnv\+::fnv\+\_\+offset}$<$ std\+::size\+\_\+t $>$\+::value) const noexcept
\end{DoxyCompactItemize}


\subsection{Detailed Description}
\subsubsection*{template$<$typename Container$>$\newline
struct kblib\+::\+F\+N\+V\+\_\+hash$<$ Container, void\+\_\+if\+\_\+t$<$ value\+\_\+detected$<$ Container $>$\+::value \&\&is\+\_\+hashable$<$ typename Container\+::value\+\_\+type $>$\+::value \&\&!hash\+\_\+detected$<$ Container $>$\+::value \&\&!(is\+\_\+contiguous$<$ Container $>$\+::value \&\&is\+\_\+trivially\+\_\+hashable$<$ typename Container\+::value\+\_\+type $>$\+::value)$>$ $>$}

Container hasher, for non-\/trivial elements (or non-\/contiguous storage) 

Definition at line 534 of file simple.\+h.



\subsection{Member Function Documentation}
\mbox{\Hypertarget{structkblib_1_1_f_n_v__hash_3_01_container_00_01void__if__t_3_01value__detected_3_01_container_03edc853b45f899ddef9c1c481777ad66_a9ea972541e1059421f66221a0ab63b43}\label{structkblib_1_1_f_n_v__hash_3_01_container_00_01void__if__t_3_01value__detected_3_01_container_03edc853b45f899ddef9c1c481777ad66_a9ea972541e1059421f66221a0ab63b43}} 
\index{kblib\+::\+F\+N\+V\+\_\+hash$<$ Container, void\+\_\+if\+\_\+t$<$ value\+\_\+detected$<$ Container $>$\+::value \&\&is\+\_\+hashable$<$ typename Container\+::value\+\_\+type $>$\+::value \&\&"!hash\+\_\+detected$<$ Container $>$\+::value \&\&"!(is\+\_\+contiguous$<$ Container $>$\+::value \&\&is\+\_\+trivially\+\_\+hashable$<$ typename Container\+::value\+\_\+type $>$\+::value)$>$ $>$@{kblib\+::\+F\+N\+V\+\_\+hash$<$ Container, void\+\_\+if\+\_\+t$<$ value\+\_\+detected$<$ Container $>$\+::value \&\&is\+\_\+hashable$<$ typename Container\+::value\+\_\+type $>$\+::value \&\&"!hash\+\_\+detected$<$ Container $>$\+::value \&\&"!(is\+\_\+contiguous$<$ Container $>$\+::value \&\&is\+\_\+trivially\+\_\+hashable$<$ typename Container\+::value\+\_\+type $>$\+::value)$>$ $>$}!operator()@{operator()}}
\index{operator()@{operator()}!kblib\+::\+F\+N\+V\+\_\+hash$<$ Container, void\+\_\+if\+\_\+t$<$ value\+\_\+detected$<$ Container $>$\+::value \&\&is\+\_\+hashable$<$ typename Container\+::value\+\_\+type $>$\+::value \&\&"!hash\+\_\+detected$<$ Container $>$\+::value \&\&"!(is\+\_\+contiguous$<$ Container $>$\+::value \&\&is\+\_\+trivially\+\_\+hashable$<$ typename Container\+::value\+\_\+type $>$\+::value)$>$ $>$@{kblib\+::\+F\+N\+V\+\_\+hash$<$ Container, void\+\_\+if\+\_\+t$<$ value\+\_\+detected$<$ Container $>$\+::value \&\&is\+\_\+hashable$<$ typename Container\+::value\+\_\+type $>$\+::value \&\&"!hash\+\_\+detected$<$ Container $>$\+::value \&\&"!(is\+\_\+contiguous$<$ Container $>$\+::value \&\&is\+\_\+trivially\+\_\+hashable$<$ typename Container\+::value\+\_\+type $>$\+::value)$>$ $>$}}
\subsubsection{\texorpdfstring{operator()()}{operator()()}}
{\footnotesize\ttfamily template$<$typename Container $>$ \\
constexpr std\+::size\+\_\+t \hyperlink{structkblib_1_1_f_n_v__hash}{kblib\+::\+F\+N\+V\+\_\+hash}$<$ Container, \hyperlink{namespacekblib_ab3cc24416f0b9a6504e1c6a437ed6230}{void\+\_\+if\+\_\+t}$<$ \hyperlink{structkblib_1_1value__detected}{value\+\_\+detected}$<$ Container $>$\+::value \&\&\hyperlink{structkblib_1_1is__hashable}{is\+\_\+hashable}$<$ typename Container\+::value\+\_\+type $>$\+::value \&\&!\hyperlink{structkblib_1_1hash__detected}{hash\+\_\+detected}$<$ Container $>$\+::value \&\&!(\hyperlink{structkblib_1_1is__contiguous}{is\+\_\+contiguous}$<$ Container $>$\+::value \&\&\hyperlink{structkblib_1_1is__trivially__hashable}{is\+\_\+trivially\+\_\+hashable}$<$ typename Container\+::value\+\_\+type $>$\+::value)$>$ $>$\+::operator() (\begin{DoxyParamCaption}\item[{const Container \&}]{key,  }\item[{std\+::size\+\_\+t}]{offset = {\ttfamily \hyperlink{structkblib_1_1fnv_1_1fnv__offset}{fnv\+::fnv\+\_\+offset}$<$std\+:\+:size\+\_\+t$>$\+:\+:value} }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}}



Definition at line 542 of file simple.\+h.



The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize}
\item 
kblib/\hyperlink{simple_8h}{simple.\+h}\end{DoxyCompactItemize}
