\hypertarget{structkblib_1_1_f_n_v__hash_3_01_t_00_01_hash_int_00_01void__if__t_3_01not_01is__contiguous_3_018b332421ae58008398d3eee2d31d8519}{}\section{kblib\+:\+:F\+N\+V\+\_\+hash$<$ T, Hash\+Int, void\+\_\+if\+\_\+t$<$ not is\+\_\+contiguous$<$ T $>$\+:\+:value and not std\+:\+:is\+\_\+integral$<$ T $>$\+:\+:value and not std\+:\+:is\+\_\+pointer$<$ T $>$\+:\+:value and is\+\_\+trivially\+\_\+hashable$<$ T $>$\+:\+:value $>$ $>$ Struct Template Reference}
\label{structkblib_1_1_f_n_v__hash_3_01_t_00_01_hash_int_00_01void__if__t_3_01not_01is__contiguous_3_018b332421ae58008398d3eee2d31d8519}\index{kblib\+::\+F\+N\+V\+\_\+hash$<$ T, Hash\+Int, void\+\_\+if\+\_\+t$<$ not is\+\_\+contiguous$<$ T $>$\+::value and not std\+::is\+\_\+integral$<$ T $>$\+::value and not std\+::is\+\_\+pointer$<$ T $>$\+::value and is\+\_\+trivially\+\_\+hashable$<$ T $>$\+::value $>$ $>$@{kblib\+::\+F\+N\+V\+\_\+hash$<$ T, Hash\+Int, void\+\_\+if\+\_\+t$<$ not is\+\_\+contiguous$<$ T $>$\+::value and not std\+::is\+\_\+integral$<$ T $>$\+::value and not std\+::is\+\_\+pointer$<$ T $>$\+::value and is\+\_\+trivially\+\_\+hashable$<$ T $>$\+::value $>$ $>$}}


Hasher for any non-\/integral trivially copyable type that has no padding.  




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

\subsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item 
Hash\+Int \hyperlink{structkblib_1_1_f_n_v__hash_3_01_t_00_01_hash_int_00_01void__if__t_3_01not_01is__contiguous_3_018b332421ae58008398d3eee2d31d8519_a3c03284d52828770cf8191adc1eb0d92}{operator()} (T key, Hash\+Int offset=\hyperlink{structkblib_1_1fnv_1_1fnv__offset}{fnv\+::fnv\+\_\+offset}$<$ Hash\+Int $>$\+::value) const noexcept
\end{DoxyCompactItemize}


\subsection{Detailed Description}
\subsubsection*{template$<$typename T, typename Hash\+Int$>$\newline
struct kblib\+::\+F\+N\+V\+\_\+hash$<$ T, Hash\+Int, void\+\_\+if\+\_\+t$<$ not is\+\_\+contiguous$<$ T $>$\+::value and not std\+::is\+\_\+integral$<$ T $>$\+::value and not std\+::is\+\_\+pointer$<$ T $>$\+::value and is\+\_\+trivially\+\_\+hashable$<$ T $>$\+::value $>$ $>$}

Hasher for any non-\/integral trivially copyable type that has no padding. 

\begin{DoxyNote}{Note}
Unfortunately, this specialization cannot be constexpr until C++20 brings std\+::bit\+\_\+cast. 
\end{DoxyNote}


Definition at line 530 of file hash.\+h.



\subsection{Member Function Documentation}
\mbox{\Hypertarget{structkblib_1_1_f_n_v__hash_3_01_t_00_01_hash_int_00_01void__if__t_3_01not_01is__contiguous_3_018b332421ae58008398d3eee2d31d8519_a3c03284d52828770cf8191adc1eb0d92}\label{structkblib_1_1_f_n_v__hash_3_01_t_00_01_hash_int_00_01void__if__t_3_01not_01is__contiguous_3_018b332421ae58008398d3eee2d31d8519_a3c03284d52828770cf8191adc1eb0d92}} 
\index{kblib\+::\+F\+N\+V\+\_\+hash$<$ T, Hash\+Int, void\+\_\+if\+\_\+t$<$ not is\+\_\+contiguous$<$ T $>$\+::value and not std\+::is\+\_\+integral$<$ T $>$\+::value and not std\+::is\+\_\+pointer$<$ T $>$\+::value and is\+\_\+trivially\+\_\+hashable$<$ T $>$\+::value $>$ $>$@{kblib\+::\+F\+N\+V\+\_\+hash$<$ T, Hash\+Int, void\+\_\+if\+\_\+t$<$ not is\+\_\+contiguous$<$ T $>$\+::value and not std\+::is\+\_\+integral$<$ T $>$\+::value and not std\+::is\+\_\+pointer$<$ T $>$\+::value and is\+\_\+trivially\+\_\+hashable$<$ T $>$\+::value $>$ $>$}!operator()@{operator()}}
\index{operator()@{operator()}!kblib\+::\+F\+N\+V\+\_\+hash$<$ T, Hash\+Int, void\+\_\+if\+\_\+t$<$ not is\+\_\+contiguous$<$ T $>$\+::value and not std\+::is\+\_\+integral$<$ T $>$\+::value and not std\+::is\+\_\+pointer$<$ T $>$\+::value and is\+\_\+trivially\+\_\+hashable$<$ T $>$\+::value $>$ $>$@{kblib\+::\+F\+N\+V\+\_\+hash$<$ T, Hash\+Int, void\+\_\+if\+\_\+t$<$ not is\+\_\+contiguous$<$ T $>$\+::value and not std\+::is\+\_\+integral$<$ T $>$\+::value and not std\+::is\+\_\+pointer$<$ T $>$\+::value and is\+\_\+trivially\+\_\+hashable$<$ T $>$\+::value $>$ $>$}}
\subsubsection{\texorpdfstring{operator()()}{operator()()}}
{\footnotesize\ttfamily template$<$typename T , typename Hash\+Int $>$ \\
Hash\+Int \hyperlink{structkblib_1_1_f_n_v__hash}{kblib\+::\+F\+N\+V\+\_\+hash}$<$ T, Hash\+Int, \hyperlink{namespacekblib_ab3cc24416f0b9a6504e1c6a437ed6230}{void\+\_\+if\+\_\+t}$<$ not \hyperlink{structkblib_1_1is__contiguous}{is\+\_\+contiguous}$<$ T $>$\+::value and not std\+::is\+\_\+integral$<$ T $>$\+::value and not std\+::is\+\_\+pointer$<$ T $>$\+::value and \hyperlink{structkblib_1_1is__trivially__hashable}{is\+\_\+trivially\+\_\+hashable}$<$ T $>$\+::value $>$ $>$\+::operator() (\begin{DoxyParamCaption}\item[{T}]{key,  }\item[{Hash\+Int}]{offset = {\ttfamily \hyperlink{structkblib_1_1fnv_1_1fnv__offset}{fnv\+::fnv\+\_\+offset}$<$HashInt$>$\+:\+:value} }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}}



Definition at line 536 of file hash.\+h.



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