// Description: Returns whether a type is tag.
#ifndef PASTELSYS_IS_TAG_H
#define PASTELSYS_IS_TAG_H
#include "pastel/sys/generic/tag.h"
#include <type_traits>
namespace Pastel
{
    namespace IsTag_
    {
        template <typename Type>
        struct IsTag_F_
            : std::false_type
        {};
        template <tag_integer Hash>
        struct IsTag_F_<Tag<Hash>>
            : std::true_type
        {};
    }
    template <typename Type>
    using IsTag_F = 
        IsTag_::IsTag_F_<
            std::remove_cv_t<
                std::remove_reference_t<Type>
            >
        >;
    template <typename Type>
    using IsTag = 
        typename IsTag_F<Type>::type;
}
#endif