Program Listing for File Curry.hpp¶
↰ Return to documentation for file (include/uitsl/meta/Curry.hpp)
#pragma once
#ifndef UITSL_META_CURRY_HPP_INCLUDE
#define UITSL_META_CURRY_HPP_INCLUDE
#include <stddef.h>
#include <type_traits>
// TODO generalize
namespace uitsl {
#include <assert.h>
#include <vector>
template<
template<typename...> typename Input,
typename Specified
>
struct CurryTypes {
template<typename... Rest>
using curried = Input<Rest..., Specified>;
};
template<
template<auto...> typename Input,
auto Specified
>
struct CurryValues {
template<auto... Rest>
using curried = Input<Rest..., Specified>;
};
template<
template<typename...> typename Input,
typename Specified
>
using Curry = CurryTypes<Input, Specified>;
template<auto x>
using ValType=std::integral_constant<decltype(x), x>;
} // namespace uitsl
#endif // #ifndef UITSL_META_CURRY_HPP_INCLUDE