W:/Work/Software/Libraries/utl/include/utl/concepts/defines.h

utl typename constraints wrapper

template <utlConstrainType(SomeConcept) T> struct lala { };
// will expand to something like:
// template <SomeConcept T> struct lala { };
// or
// template <typename T> struct lala { };
#ifndef __utl_concepts_defines_h__
#define __utl_concepts_defines_h__
#if CXX_CONCEPTS
#define utlConstrainType(_Concept_) _Concept_
#else
#define utlConstrainType(_Concept_) typename
#endif
#if CXX_CONCEPTS
#if __cpp_concepts <= 201507L
#define _utlConcept concept bool
#else
#define _utlConcept concept
#endif
#else
#define _utlConcept constexpr bool
#endif
#ifndef CXX_LIB_INVOKE
#ifdef __cpp_lib_invoke
#define CXX_LIB_INVOKE __cpp_lib_invoke
#else
#define CXX_LIB_INVOKE 0
#endif
#endif
#endif /* __utl_concepts_defines_h__ */