Rewrite of the standard type traits library with constexpr