is_subtractable.h

Back to Orphans

pastel/sys/type_traits/

// Description: Tests whether a type has subtraction.

#ifndef PASTELSYS_IS_SUBTRACTABLE_H
#define PASTELSYS_IS_SUBTRACTABLE_H

#include "pastel/sys/type_traits/compiles.h"
#include "pastel/sys/function/identity_function.h"

namespace Pastel
{

        template <
            typename Type,
            typename = 
                decltype(std::declval<Type>() - std::declval<Type>())
        >
        struct Subtraction_Test {};

        template <typename Type>
        using Is_Subtractable =
            Compiles<Subtraction_Test, Type>;

        template <typename Type>
        using Is_Subtractable_F =
            Identity_F<Is_Subtractable<Type>>;

}

#endif