\hypertarget{structkblib_1_1detail_1_1sort__transform__impl}{}\section{kblib\+:\+:detail\+:\+:sort\+\_\+transform\+\_\+impl$<$ Random\+Access\+It, Unary\+Operation, Binary\+Predicate, Sort\+Key, bool, bool, bool, bool $>$ Struct Template Reference}
\label{structkblib_1_1detail_1_1sort__transform__impl}\index{kblib\+::detail\+::sort\+\_\+transform\+\_\+impl$<$ Random\+Access\+It, Unary\+Operation, Binary\+Predicate, Sort\+Key, bool, bool, bool, bool $>$@{kblib\+::detail\+::sort\+\_\+transform\+\_\+impl$<$ Random\+Access\+It, Unary\+Operation, Binary\+Predicate, Sort\+Key, bool, bool, bool, bool $>$}}


Sort data after applying an arbitrary transformation to it. The primary template handles the general case of arbitrary transformation and arbitrary compare predicate.  




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

\subsection*{Static Public Member Functions}
\begin{DoxyCompactItemize}
\item 
static constexpr auto \hyperlink{structkblib_1_1detail_1_1sort__transform__impl_a08f9f86cd3684bb0870f14783ea814b9}{inplace} (Random\+Access\+It begin, const Random\+Access\+It end, Unary\+Operation \&\&\hyperlink{namespacekblib_aff53cc55f02129e6192d7a87c7cdf7f0}{transform}, Binary\+Predicate \&\&compare) -\/$>$ void
\item 
static constexpr auto \hyperlink{structkblib_1_1detail_1_1sort__transform__impl_ac410f82f0f0d6714ec1e723048efa1e1}{scratch} (Random\+Access\+It begin, const Random\+Access\+It end, Unary\+Operation \&\&\hyperlink{namespacekblib_aff53cc55f02129e6192d7a87c7cdf7f0}{transform}, Binary\+Predicate \&\&compare) -\/$>$ void
\item 
{\footnotesize template$<$typename Random\+Access\+It2 $>$ }\\static constexpr auto \hyperlink{structkblib_1_1detail_1_1sort__transform__impl_aeac67bbf078ea43533af9b3a496f85de}{copy} (Random\+Access\+It begin, const Random\+Access\+It end, Random\+Access\+It2 d\+\_\+begin, Random\+Access\+It2 d\+\_\+end, Unary\+Operation \&\&\hyperlink{namespacekblib_aff53cc55f02129e6192d7a87c7cdf7f0}{transform}, Binary\+Predicate \&\&compare) -\/$>$ void
\end{DoxyCompactItemize}


\subsection{Detailed Description}
\subsubsection*{template$<$typename Random\+Access\+It, typename Unary\+Operation, typename Binary\+Predicate, typename Sort\+Key, bool = is\+\_\+trivial\+\_\+transformation$<$\+Unary\+Operation$>$\+::value, bool = std\+::is\+\_\+fundamental$<$\+Sort\+Key$>$\+::value, bool = is\+\_\+radix\+\_\+sortable\+\_\+v$<$\+Sort\+Key$>$, bool = std\+::is\+\_\+integral$<$\+Sort\+Key$>$\+::value$>$\newline
struct kblib\+::detail\+::sort\+\_\+transform\+\_\+impl$<$ Random\+Access\+It, Unary\+Operation, Binary\+Predicate, Sort\+Key, bool, bool, bool, bool $>$}

Sort data after applying an arbitrary transformation to it. The primary template handles the general case of arbitrary transformation and arbitrary compare predicate. 

Definition at line 376 of file sort.\+h.



\subsection{Member Function Documentation}
\mbox{\Hypertarget{structkblib_1_1detail_1_1sort__transform__impl_aeac67bbf078ea43533af9b3a496f85de}\label{structkblib_1_1detail_1_1sort__transform__impl_aeac67bbf078ea43533af9b3a496f85de}} 
\index{kblib\+::detail\+::sort\+\_\+transform\+\_\+impl@{kblib\+::detail\+::sort\+\_\+transform\+\_\+impl}!copy@{copy}}
\index{copy@{copy}!kblib\+::detail\+::sort\+\_\+transform\+\_\+impl@{kblib\+::detail\+::sort\+\_\+transform\+\_\+impl}}
\subsubsection{\texorpdfstring{copy()}{copy()}}
{\footnotesize\ttfamily template$<$typename Random\+Access\+It , typename Unary\+Operation , typename Binary\+Predicate , typename Sort\+Key , bool  = is\+\_\+trivial\+\_\+transformation$<$\+Unary\+Operation$>$\+::value, bool  = std\+::is\+\_\+fundamental$<$\+Sort\+Key$>$\+::value, bool  = is\+\_\+radix\+\_\+sortable\+\_\+v$<$\+Sort\+Key$>$, bool  = std\+::is\+\_\+integral$<$\+Sort\+Key$>$\+::value$>$ \\
template$<$typename Random\+Access\+It2 $>$ \\
static constexpr auto \hyperlink{structkblib_1_1detail_1_1sort__transform__impl}{kblib\+::detail\+::sort\+\_\+transform\+\_\+impl}$<$ Random\+Access\+It, Unary\+Operation, Binary\+Predicate, Sort\+Key, bool, bool, bool, bool $>$\+::copy (\begin{DoxyParamCaption}\item[{Random\+Access\+It}]{begin,  }\item[{const Random\+Access\+It}]{end,  }\item[{Random\+Access\+It2}]{d\+\_\+begin,  }\item[{Random\+Access\+It2}]{d\+\_\+end,  }\item[{Unary\+Operation \&\&}]{transform,  }\item[{Binary\+Predicate \&\&}]{compare }\end{DoxyParamCaption}) -\/$>$ void \hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [static]}}

T\+O\+D\+O(killerbee13)\+: write efficent sort\+\_\+transform\+\_\+copy 

Definition at line 412 of file sort.\+h.

\mbox{\Hypertarget{structkblib_1_1detail_1_1sort__transform__impl_a08f9f86cd3684bb0870f14783ea814b9}\label{structkblib_1_1detail_1_1sort__transform__impl_a08f9f86cd3684bb0870f14783ea814b9}} 
\index{kblib\+::detail\+::sort\+\_\+transform\+\_\+impl@{kblib\+::detail\+::sort\+\_\+transform\+\_\+impl}!inplace@{inplace}}
\index{inplace@{inplace}!kblib\+::detail\+::sort\+\_\+transform\+\_\+impl@{kblib\+::detail\+::sort\+\_\+transform\+\_\+impl}}
\subsubsection{\texorpdfstring{inplace()}{inplace()}}
{\footnotesize\ttfamily template$<$typename Random\+Access\+It , typename Unary\+Operation , typename Binary\+Predicate , typename Sort\+Key , bool  = is\+\_\+trivial\+\_\+transformation$<$\+Unary\+Operation$>$\+::value, bool  = std\+::is\+\_\+fundamental$<$\+Sort\+Key$>$\+::value, bool  = is\+\_\+radix\+\_\+sortable\+\_\+v$<$\+Sort\+Key$>$, bool  = std\+::is\+\_\+integral$<$\+Sort\+Key$>$\+::value$>$ \\
static constexpr auto \hyperlink{structkblib_1_1detail_1_1sort__transform__impl}{kblib\+::detail\+::sort\+\_\+transform\+\_\+impl}$<$ Random\+Access\+It, Unary\+Operation, Binary\+Predicate, Sort\+Key, bool, bool, bool, bool $>$\+::inplace (\begin{DoxyParamCaption}\item[{Random\+Access\+It}]{begin,  }\item[{const Random\+Access\+It}]{end,  }\item[{Unary\+Operation \&\&}]{transform,  }\item[{Binary\+Predicate \&\&}]{compare }\end{DoxyParamCaption}) -\/$>$ void \hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [static]}}

T\+O\+D\+O(killerbee13)\+: write efficient inplace sort\+\_\+transform 

Definition at line 377 of file sort.\+h.

\mbox{\Hypertarget{structkblib_1_1detail_1_1sort__transform__impl_ac410f82f0f0d6714ec1e723048efa1e1}\label{structkblib_1_1detail_1_1sort__transform__impl_ac410f82f0f0d6714ec1e723048efa1e1}} 
\index{kblib\+::detail\+::sort\+\_\+transform\+\_\+impl@{kblib\+::detail\+::sort\+\_\+transform\+\_\+impl}!scratch@{scratch}}
\index{scratch@{scratch}!kblib\+::detail\+::sort\+\_\+transform\+\_\+impl@{kblib\+::detail\+::sort\+\_\+transform\+\_\+impl}}
\subsubsection{\texorpdfstring{scratch()}{scratch()}}
{\footnotesize\ttfamily template$<$typename Random\+Access\+It , typename Unary\+Operation , typename Binary\+Predicate , typename Sort\+Key , bool  = is\+\_\+trivial\+\_\+transformation$<$\+Unary\+Operation$>$\+::value, bool  = std\+::is\+\_\+fundamental$<$\+Sort\+Key$>$\+::value, bool  = is\+\_\+radix\+\_\+sortable\+\_\+v$<$\+Sort\+Key$>$, bool  = std\+::is\+\_\+integral$<$\+Sort\+Key$>$\+::value$>$ \\
static constexpr auto \hyperlink{structkblib_1_1detail_1_1sort__transform__impl}{kblib\+::detail\+::sort\+\_\+transform\+\_\+impl}$<$ Random\+Access\+It, Unary\+Operation, Binary\+Predicate, Sort\+Key, bool, bool, bool, bool $>$\+::scratch (\begin{DoxyParamCaption}\item[{Random\+Access\+It}]{begin,  }\item[{const Random\+Access\+It}]{end,  }\item[{Unary\+Operation \&\&}]{transform,  }\item[{Binary\+Predicate \&\&}]{compare }\end{DoxyParamCaption}) -\/$>$ void \hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [static]}}

T\+O\+D\+O(killerbee13)\+: write efficient sort\+\_\+transform 

Definition at line 394 of file sort.\+h.



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