#ifndef TEMPLATES_H #define TEMPLATES_H #include template struct constant { static constexpr T value = val; T& operator()() {return value;} }; template struct isSame { using cnst = constant; bool static inline constexpr val(){return cnst::value;}; constexpr operator bool() const {return cnst::value;} bool constexpr operator()() {return cnst::value;} }; template struct isSame { using cnst = constant; constexpr operator bool() const {return cnst::value;} bool static inline constexpr val(){return cnst::value;}; bool constexpr operator()() {return cnst::value;} }; template struct parametersOperations { template using first = Head; template using tail = parametersOperations; // Append operation template struct append { using result = parametersOperations::template append::result; }; template