\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}