36 lines
721 B
C++
36 lines
721 B
C++
#include "Data.hpp"
|
|
|
|
template <typename Return, typename... Parameters>
|
|
struct Lambda {
|
|
using returnType = Return;
|
|
// using paramType = Parameter;
|
|
};
|
|
|
|
template <typename X>
|
|
struct Identity :
|
|
public Lambda<typename X::type, typename X::type>
|
|
{
|
|
using value = X;
|
|
};
|
|
|
|
template <typename X>
|
|
struct NumericIncrement :
|
|
public Lambda<typename X::type, typename X::type>
|
|
{
|
|
using value = Number<X::value + 1>;
|
|
};
|
|
|
|
template <typename X>
|
|
struct NumericDouble :
|
|
public Lambda<typename X::type, typename X::type>
|
|
{
|
|
using value = Number<X::value * 2>;
|
|
};
|
|
|
|
template <typename X, typename Y>
|
|
struct NumericAdd :
|
|
public Lambda<typename X::type, typename X::type, typename Y::type>
|
|
{
|
|
using value = Number<X::value + Y::value>;
|
|
};
|