\hypertarget{_w_1_2_work_2_software_2_libraries_2utl_2include_2utl_2concepts_2defines_8h-example}{}\section{W\+:/\+Work/\+Software/\+Libraries/utl/include/utl/concepts/defines.\+h}
utl typename constraints wrapper
\begin{DoxyCode}
\textcolor{keyword}{template} <utlConstrainType(SomeConcept) T> \textcolor{keyword}{struct }lala \{ \};
\textcolor{comment}{// will expand to something like:}
\textcolor{comment}{// template <SomeConcept T> struct lala \{ \};}
\textcolor{comment}{// or}
\textcolor{comment}{// template <typename T> struct lala \{ \};}
\end{DoxyCode}



\begin{DoxyCodeInclude}

\textcolor{preprocessor}{#ifndef \_\_utl\_concepts\_defines\_h\_\_}
\textcolor{preprocessor}{#define \_\_utl\_concepts\_defines\_h\_\_}


\textcolor{preprocessor}{#if CXX\_CONCEPTS}
\textcolor{preprocessor}{   #define utlConstrainType(\_Concept\_)   \_Concept\_}
\textcolor{preprocessor}{#else}
\textcolor{preprocessor}{   #define utlConstrainType(\_Concept\_)   typename}
\textcolor{preprocessor}{#endif}

\textcolor{preprocessor}{#if CXX\_CONCEPTS}
\textcolor{preprocessor}{ #if \_\_cpp\_concepts <= 201507L}
\textcolor{preprocessor}{   #define \_utlConcept   concept bool}
\textcolor{preprocessor}{ #else}
\textcolor{preprocessor}{   #define \_utlConcept   concept}
\textcolor{preprocessor}{ #endif}
\textcolor{preprocessor}{#else}
\textcolor{preprocessor}{  #define \_utlConcept    constexpr bool}
\textcolor{preprocessor}{#endif}

\textcolor{preprocessor}{#ifndef CXX\_LIB\_INVOKE}
\textcolor{preprocessor}{ #ifdef \_\_cpp\_lib\_invoke}
\textcolor{preprocessor}{  #define CXX\_LIB\_INVOKE \_\_cpp\_lib\_invoke}
\textcolor{preprocessor}{ #else}
\textcolor{preprocessor}{   #define CXX\_LIB\_INVOKE 0}
\textcolor{preprocessor}{ #endif}
\textcolor{preprocessor}{#endif}


\textcolor{preprocessor}{#endif }\textcolor{comment}{/* \_\_utl\_concepts\_defines\_h\_\_ */}\textcolor{preprocessor}{}
\end{DoxyCodeInclude}
 