// Description: Native types as a monoid concept
// DocumentationOf: monoid_concept.h
#ifndef PASTELSYS_NATIVE_MONOID_H
#define PASTELSYS_NATIVE_MONOID_H
#include "pastel/sys/sfinae.h"
namespace Pastel
{
    // Additive monoid
    template <
        typename Type, 
        Requires<std::is_arithmetic<Type>> = 0>
    bool zero(Type that)
    {
        return that == 0;
    }
    // Multiplicative monoid
    template <
        typename Type, 
        Requires<std::is_arithmetic<Type>> = 0>
    bool one(Type that)
    {
        return that == 1;
    }
}
#endif