\hypertarget{struct_k_b_l_i_b___n_s_1_1_f_n_v__hash_3_01_container_00_01_hash_int_00_01void__if__t_3_01value_910ba60218b4b4271cfbb059b6082863}{}\doxysection{KBLIB\+\_\+\+NS\+::FNV\+\_\+hash\texorpdfstring{$<$}{<} Container, Hash\+Int, void\+\_\+if\+\_\+t\texorpdfstring{$<$}{<} value\+\_\+detected\texorpdfstring{$<$}{<} Container \texorpdfstring{$>$}{>}\+::value and is\+\_\+hashable\+\_\+v\texorpdfstring{$<$}{<} value\+\_\+detected\+\_\+t\texorpdfstring{$<$}{<} Container \texorpdfstring{$>$}{>} \texorpdfstring{$>$}{>} and not hash\+\_\+detected\texorpdfstring{$<$}{<} Container \texorpdfstring{$>$}{>}\+::value and is\+\_\+iterable\texorpdfstring{$<$}{<} Container \texorpdfstring{$>$}{>}\+::value and not(is\+\_\+contiguous\texorpdfstring{$<$}{<} Container \texorpdfstring{$>$}{>}\+::value and is\+\_\+trivially\+\_\+hashable\+\_\+v\texorpdfstring{$<$}{<} typename Container\+::value\+\_\+type \texorpdfstring{$>$}{>}) and not is\+\_\+iterator\+\_\+v\texorpdfstring{$<$}{<} Container \texorpdfstring{$>$}{>} \texorpdfstring{$>$}{>} \texorpdfstring{$>$}{>} Struct Template Reference}
\label{struct_k_b_l_i_b___n_s_1_1_f_n_v__hash_3_01_container_00_01_hash_int_00_01void__if__t_3_01value_910ba60218b4b4271cfbb059b6082863}\index{KBLIB\_NS::FNV\_hash$<$ Container, HashInt, void\_if\_t$<$ value\_detected$<$ Container $>$::value and is\_hashable\_v$<$ value\_detected\_t$<$ Container $>$ $>$ and not hash\_detected$<$ Container $>$::value and is\_iterable$<$ Container $>$::value and not(is\_contiguous$<$ Container $>$::value and is\_trivially\_hashable\_v$<$ typename Container::value\_type $>$) and not is\_iterator\_v$<$ Container $>$ $>$ $>$@{KBLIB\_NS::FNV\_hash$<$ Container, HashInt, void\_if\_t$<$ value\_detected$<$ Container $>$::value and is\_hashable\_v$<$ value\_detected\_t$<$ Container $>$ $>$ and not hash\_detected$<$ Container $>$::value and is\_iterable$<$ Container $>$::value and not(is\_contiguous$<$ Container $>$::value and is\_trivially\_hashable\_v$<$ typename Container::value\_type $>$) and not is\_iterator\_v$<$ Container $>$ $>$ $>$}}


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




{\ttfamily \#include $<$kblib/hash.\+h$>$}

\doxysubsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item 
constexpr auto \mbox{\hyperlink{struct_k_b_l_i_b___n_s_1_1_f_n_v__hash_3_01_container_00_01_hash_int_00_01void__if__t_3_01value_910ba60218b4b4271cfbb059b6082863_a65a191162bd4a7fcdc087d9dc13734a8}{operator()}} (const Container \&key, Hash\+Int offset=\mbox{\hyperlink{struct_k_b_l_i_b___n_s_1_1fnv_1_1fnv__offset}{fnv\+::fnv\+\_\+offset}}$<$ Hash\+Int $>$\+::value) const noexcept -\/$>$ Hash\+Int
\end{DoxyCompactItemize}


\doxysubsection{Detailed Description}
\subsubsection*{template$<$typename Container, typename Hash\+Int$>$\newline
struct KBLIB\+\_\+\+NS\+::\+FNV\+\_\+hash$<$ Container, Hash\+Int, void\+\_\+if\+\_\+t$<$ value\+\_\+detected$<$ Container $>$\+::value and is\+\_\+hashable\+\_\+v$<$ value\+\_\+detected\+\_\+t$<$ Container $>$ $>$ and not hash\+\_\+detected$<$ Container $>$\+::value and is\+\_\+iterable$<$ Container $>$\+::value and not(is\+\_\+contiguous$<$ Container $>$\+::value and is\+\_\+trivially\+\_\+hashable\+\_\+v$<$ typename Container\+::value\+\_\+type $>$) and not is\+\_\+iterator\+\_\+v$<$ Container $>$ $>$ $>$}
Container hasher, for non-\/trivial elements (or non-\/contiguous storage) 

Definition at line \mbox{\hyperlink{hash_8h_source_l00586}{586}} of file \mbox{\hyperlink{hash_8h_source}{hash.\+h}}.



\doxysubsection{Member Function Documentation}
\mbox{\Hypertarget{struct_k_b_l_i_b___n_s_1_1_f_n_v__hash_3_01_container_00_01_hash_int_00_01void__if__t_3_01value_910ba60218b4b4271cfbb059b6082863_a65a191162bd4a7fcdc087d9dc13734a8}\label{struct_k_b_l_i_b___n_s_1_1_f_n_v__hash_3_01_container_00_01_hash_int_00_01void__if__t_3_01value_910ba60218b4b4271cfbb059b6082863_a65a191162bd4a7fcdc087d9dc13734a8}} 
\index{KBLIB\_NS::FNV\_hash$<$ Container, HashInt, void\_if\_t$<$ value\_detected$<$ Container $>$::value and is\_hashable\_v$<$ value\_detected\_t$<$ Container $>$ $>$ and not hash\_detected$<$ Container $>$::value and is\_iterable$<$ Container $>$::value and not(is\_contiguous$<$ Container $>$::value and is\_trivially\_hashable\_v$<$ typename Container::value\_type $>$) and not is\_iterator\_v$<$ Container $>$ $>$ $>$@{KBLIB\_NS::FNV\_hash$<$ Container, HashInt, void\_if\_t$<$ value\_detected$<$ Container $>$::value and is\_hashable\_v$<$ value\_detected\_t$<$ Container $>$ $>$ and not hash\_detected$<$ Container $>$::value and is\_iterable$<$ Container $>$::value and not(is\_contiguous$<$ Container $>$::value and is\_trivially\_hashable\_v$<$ typename Container::value\_type $>$) and not is\_iterator\_v$<$ Container $>$ $>$ $>$}!operator()@{operator()}}
\index{operator()@{operator()}!KBLIB\_NS::FNV\_hash$<$ Container, HashInt, void\_if\_t$<$ value\_detected$<$ Container $>$::value and is\_hashable\_v$<$ value\_detected\_t$<$ Container $>$ $>$ and not hash\_detected$<$ Container $>$::value and is\_iterable$<$ Container $>$::value and not(is\_contiguous$<$ Container $>$::value and is\_trivially\_hashable\_v$<$ typename Container::value\_type $>$) and not is\_iterator\_v$<$ Container $>$ $>$ $>$@{KBLIB\_NS::FNV\_hash$<$ Container, HashInt, void\_if\_t$<$ value\_detected$<$ Container $>$::value and is\_hashable\_v$<$ value\_detected\_t$<$ Container $>$ $>$ and not hash\_detected$<$ Container $>$::value and is\_iterable$<$ Container $>$::value and not(is\_contiguous$<$ Container $>$::value and is\_trivially\_hashable\_v$<$ typename Container::value\_type $>$) and not is\_iterator\_v$<$ Container $>$ $>$ $>$}}
\doxysubsubsection{\texorpdfstring{operator()()}{operator()()}}
{\footnotesize\ttfamily template$<$typename Container , typename Hash\+Int $>$ \\
constexpr auto \mbox{\hyperlink{struct_k_b_l_i_b___n_s_1_1_f_n_v__hash}{KBLIB\+\_\+\+NS\+::\+FNV\+\_\+hash}}$<$ Container, Hash\+Int, \mbox{\hyperlink{namespace_k_b_l_i_b___n_s_a0091fb16bc1767a3e5e1cff5aa8dff53}{void\+\_\+if\+\_\+t}}$<$ \mbox{\hyperlink{struct_k_b_l_i_b___n_s_1_1value__detected}{value\+\_\+detected}}$<$ Container $>$\+::value and \mbox{\hyperlink{namespace_k_b_l_i_b___n_s_a5c6ead81a6fc54203d729f6d2c3080a0}{is\+\_\+hashable\+\_\+v}}$<$ \mbox{\hyperlink{namespace_k_b_l_i_b___n_s_a50c93c7b2ebacfc3a249f7a3734e703f}{value\+\_\+detected\+\_\+t}}$<$ Container $>$ $>$ and not \mbox{\hyperlink{struct_k_b_l_i_b___n_s_1_1hash__detected}{hash\+\_\+detected}}$<$ Container $>$\+::value and \mbox{\hyperlink{struct_k_b_l_i_b___n_s_1_1is__iterable}{is\+\_\+iterable}}$<$ Container $>$\+::value and not(\mbox{\hyperlink{struct_k_b_l_i_b___n_s_1_1is__contiguous}{is\+\_\+contiguous}}$<$ Container $>$\+::value and \mbox{\hyperlink{namespace_k_b_l_i_b___n_s_ab285613a76758ad7a7693b5562101634}{is\+\_\+trivially\+\_\+hashable\+\_\+v}}$<$ typename Container\+::value\+\_\+type $>$) and not \mbox{\hyperlink{namespace_k_b_l_i_b___n_s_a93341c873e1c1744c353cc37872997db}{is\+\_\+iterator\+\_\+v}}$<$ Container $>$ $>$ $>$\+::operator() (\begin{DoxyParamCaption}\item[{const Container \&}]{key,  }\item[{Hash\+Int}]{offset = {\ttfamily \mbox{\hyperlink{struct_k_b_l_i_b___n_s_1_1fnv_1_1fnv__offset}{fnv\+::fnv\+\_\+offset}}$<$HashInt$>$\+:\+:value} }\end{DoxyParamCaption}) const -\/$>$ Hash\+Int \hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [constexpr]}, {\ttfamily [noexcept]}}



Definition at line \mbox{\hyperlink{hash_8h_source_l00596}{596}} of file \mbox{\hyperlink{hash_8h_source}{hash.\+h}}.



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