/** * Copyright (c) 2026 Alexey Gavrilov * * This file is part of ObjectiveOS. * * ObjectiveOS is free software: you can redistribute it and/or modify it under * the terms of the GNU General Public License as published by the Free Software * Foundation, either version 3 of the License, or (at your option) any later * version. * * ObjectiveOS is distributed in the hope that it will be useful, but WITHOUT ANY * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR * A PARTICULAR PURPOSE. See the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License along with * ObjectiveOS. If not, see . */ #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