\doxysection{gko::\+syn Namespace Reference}
\hypertarget{namespacegko_1_1syn}{}\label{namespacegko_1_1syn}\index{gko::syn@{gko::syn}}


The Synthesizer namespace.  


\doxysubsubsection*{Classes}
\begin{DoxyCompactItemize}
\item 
struct \doxymbox{\hyperlink{structgko_1_1syn_1_1value__list}{value\+\_\+list}}
\begin{DoxyCompactList}\small\item\em \doxylink{structgko_1_1syn_1_1value__list}{value\+\_\+list} records several values with the same type in template. \end{DoxyCompactList}\item 
struct \doxymbox{\hyperlink{structgko_1_1syn_1_1type__list}{type\+\_\+list}}
\begin{DoxyCompactList}\small\item\em \doxylink{structgko_1_1syn_1_1type__list}{type\+\_\+list} records several types in template \end{DoxyCompactList}\item 
struct \doxymbox{\hyperlink{structgko_1_1syn_1_1range}{range}}
\begin{DoxyCompactList}\small\item\em range records start, end, step in template \end{DoxyCompactList}\end{DoxyCompactItemize}
\doxysubsubsection*{Typedefs}
\begin{DoxyCompactItemize}
\item 
{\footnotesize template$<$typename List1, typename List2$>$ }\\using \doxymbox{\hyperlink{namespacegko_1_1syn_affc331b0566012de95f4c38a1d4cd425}{concatenate}} = typename detail::\+concatenate\+\_\+impl$<$List1, List2$>$::\+type
\begin{DoxyCompactList}\small\item\em concatenate combines two \doxylink{structgko_1_1syn_1_1value__list}{value\+\_\+list} into one \doxylink{structgko_1_1syn_1_1value__list}{value\+\_\+list}. \end{DoxyCompactList}\item 
{\footnotesize template$<$typename T$>$ }\\using \doxymbox{\hyperlink{namespacegko_1_1syn_a0c9c4b158767f0ba21692be9ea34871f}{as\+\_\+list}} = typename detail::\+as\+\_\+list\+\_\+impl$<$T$>$::\+type
\begin{DoxyCompactList}\small\item\em \doxylink{namespacegko_1_1syn_a0c9c4b158767f0ba21692be9ea34871f}{as\+\_\+list$<$\+T$>$} gives the alias type of as\+\_\+list\+\_\+impl$<$\+T$>$::\+type. \end{DoxyCompactList}\end{DoxyCompactItemize}
\doxysubsubsection*{Functions}
\begin{DoxyCompactItemize}
\item 
{\footnotesize template$<$typename T, T... Value$>$ }\\constexpr std::\+array$<$ T, sizeof...(Value)$>$ \doxymbox{\hyperlink{namespacegko_1_1syn_ac86a34a4d18aac6063c606be76534cd8}{as\+\_\+array}} (\doxymbox{\hyperlink{structgko_1_1syn_1_1value__list}{value\+\_\+list}}$<$ T, Value... $>$ vl)
\begin{DoxyCompactList}\small\item\em as\+\_\+array$<$\+T$>$ returns the array from \doxylink{structgko_1_1syn_1_1value__list}{value\+\_\+list}. \end{DoxyCompactList}\end{DoxyCompactItemize}


\doxysubsection{Detailed Description}
The Synthesizer namespace. 

\label{doc-typedef-members}
\Hypertarget{namespacegko_1_1syn_doc-typedef-members}
\doxysubsection{Typedef Documentation}
\Hypertarget{namespacegko_1_1syn_a0c9c4b158767f0ba21692be9ea34871f}\index{gko::syn@{gko::syn}!as\_list@{as\_list}}
\index{as\_list@{as\_list}!gko::syn@{gko::syn}}
\doxysubsubsection{\texorpdfstring{as\_list}{as\_list}}
{\footnotesize\ttfamily \label{namespacegko_1_1syn_a0c9c4b158767f0ba21692be9ea34871f} 
template$<$typename T$>$ \\
using \doxymbox{\hyperlink{namespacegko_1_1syn_a0c9c4b158767f0ba21692be9ea34871f}{gko::\+syn::\+as\+\_\+list}} = typename detail::\+as\+\_\+list\+\_\+impl$<$T$>$::\+type}



\doxylink{namespacegko_1_1syn_a0c9c4b158767f0ba21692be9ea34871f}{as\+\_\+list$<$\+T$>$} gives the alias type of as\+\_\+list\+\_\+impl$<$\+T$>$::\+type. 

It gives a list (itself) if input is already a list, or generates list type from range input.


\begin{DoxyTemplParams}{Template Parameters}
{\em T} & list or range \\
\hline
\end{DoxyTemplParams}
\Hypertarget{namespacegko_1_1syn_affc331b0566012de95f4c38a1d4cd425}\index{gko::syn@{gko::syn}!concatenate@{concatenate}}
\index{concatenate@{concatenate}!gko::syn@{gko::syn}}
\doxysubsubsection{\texorpdfstring{concatenate}{concatenate}}
{\footnotesize\ttfamily \label{namespacegko_1_1syn_affc331b0566012de95f4c38a1d4cd425} 
template$<$typename List1, typename List2$>$ \\
using \doxymbox{\hyperlink{namespacegko_1_1syn_affc331b0566012de95f4c38a1d4cd425}{gko::\+syn::\+concatenate}} = typename detail::\+concatenate\+\_\+impl$<$List1, List2$>$::\+type}



concatenate combines two \doxylink{structgko_1_1syn_1_1value__list}{value\+\_\+list} into one \doxylink{structgko_1_1syn_1_1value__list}{value\+\_\+list}. 


\begin{DoxyTemplParams}{Template Parameters}
{\em List1} & the first list \\
\hline
{\em List2} & the second list \\
\hline
\end{DoxyTemplParams}


\label{doc-func-members}
\Hypertarget{namespacegko_1_1syn_doc-func-members}
\doxysubsection{Function Documentation}
\Hypertarget{namespacegko_1_1syn_ac86a34a4d18aac6063c606be76534cd8}\index{gko::syn@{gko::syn}!as\_array@{as\_array}}
\index{as\_array@{as\_array}!gko::syn@{gko::syn}}
\doxysubsubsection{\texorpdfstring{as\_array()}{as\_array()}}
{\footnotesize\ttfamily \label{namespacegko_1_1syn_ac86a34a4d18aac6063c606be76534cd8} 
template$<$typename T, T... Value$>$ \\
std::\+array$<$ T, sizeof...(Value)$>$ gko::\+syn::\+as\+\_\+array (\begin{DoxyParamCaption}\item[{\doxymbox{\hyperlink{structgko_1_1syn_1_1value__list}{value\+\_\+list}}$<$ T, Value... $>$}]{vl}{}\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [constexpr]}}



as\+\_\+array$<$\+T$>$ returns the array from \doxylink{structgko_1_1syn_1_1value__list}{value\+\_\+list}. 

It will be helpful if using for in runtime on the array.


\begin{DoxyTemplParams}{Template Parameters}
{\em T} & the type of \doxylink{structgko_1_1syn_1_1value__list}{value\+\_\+list} \\
\hline
{\em Value} & the values of \doxylink{structgko_1_1syn_1_1value__list}{value\+\_\+list}\\
\hline
\end{DoxyTemplParams}

\begin{DoxyParams}{Parameters}
{\em \doxylink{structgko_1_1syn_1_1value__list}{value\+\_\+list}} & the input \doxylink{structgko_1_1syn_1_1value__list}{value\+\_\+list}\\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
std::\+array the std::\+array contains the values of \doxylink{structgko_1_1syn_1_1value__list}{value\+\_\+list} 
\end{DoxyReturn}
