Apply clang-format
This commit is contained in:
parent
d1eeae83c6
commit
53ce099bf9
|
@ -9,8 +9,7 @@ namespace CppUtilities {
|
|||
* \brief The IsFlagEnumClass class is used to decide whether to enable operations for flag enums for \tp T.
|
||||
* \remarks This class is still experimental and might be changed or removed in future minior releases.
|
||||
*/
|
||||
template <typename T> struct IsFlagEnumClass : public Traits::Bool<false> {
|
||||
};
|
||||
template <typename T> struct IsFlagEnumClass : public Traits::Bool<false> {};
|
||||
|
||||
// clang-format off
|
||||
/*!
|
||||
|
|
|
@ -20,32 +20,25 @@ enum class Enabler {};
|
|||
template <typename If, typename Then, typename Else> using Conditional = typename std::conditional<If::value, Then, Else>::type;
|
||||
|
||||
/// \brief Wraps a static boolean constant.
|
||||
template <bool B, typename...> struct Bool : std::integral_constant<bool, B> {
|
||||
};
|
||||
template <bool B, typename...> struct Bool : std::integral_constant<bool, B> {};
|
||||
|
||||
/// \brief Negates the specified value.
|
||||
template <typename T> using Not = Bool<!T::value>;
|
||||
|
||||
/// \brief Evaluates to Bool<true> if at least one of the specified conditions is true; otherwise evaluates to Bool<false>.
|
||||
template <typename... T> struct Any : Bool<false> {
|
||||
};
|
||||
template <typename... T> struct Any : Bool<false> {};
|
||||
/// \brief Evaluates to Bool<true> if at least one of the specified conditions is true; otherwise evaluates to Bool<false>.
|
||||
template <typename Head, typename... Tail> struct Any<Head, Tail...> : Conditional<Head, Bool<true>, Any<Tail...>> {
|
||||
};
|
||||
template <typename Head, typename... Tail> struct Any<Head, Tail...> : Conditional<Head, Bool<true>, Any<Tail...>> {};
|
||||
|
||||
/// \brief Evaluates to Bool<true> if all specified conditions are true; otherwise evaluates to Bool<false>.
|
||||
template <typename... T> struct All : Bool<true> {
|
||||
};
|
||||
template <typename... T> struct All : Bool<true> {};
|
||||
/// \brief Evaluates to Bool<true> if all specified conditions are true; otherwise evaluates to Bool<false>.
|
||||
template <typename Head, typename... Tail> struct All<Head, Tail...> : Conditional<Head, All<Tail...>, Bool<false>> {
|
||||
};
|
||||
template <typename Head, typename... Tail> struct All<Head, Tail...> : Conditional<Head, All<Tail...>, Bool<false>> {};
|
||||
|
||||
/// \brief Evaluates to Bool<true> if none of the specified conditions are true; otherwise evaluates to Bool<false>.
|
||||
template <typename... T> struct None : Bool<true> {
|
||||
};
|
||||
template <typename... T> struct None : Bool<true> {};
|
||||
/// \brief Evaluates to Bool<true> if none of the specified conditions are true; otherwise evaluates to Bool<false>.
|
||||
template <typename Head, typename... Tail> struct None<Head, Tail...> : Conditional<Head, Bool<false>, None<Tail...>> {
|
||||
};
|
||||
template <typename Head, typename... Tail> struct None<Head, Tail...> : Conditional<Head, Bool<false>, None<Tail...>> {};
|
||||
|
||||
/// \brief Shortcut for std::enable_if to omit ::value and ::type.
|
||||
template <typename... Condition> using EnableIf = typename std::enable_if<All<Condition...>::value, Detail::Enabler>::type;
|
||||
|
@ -59,59 +52,46 @@ template <typename... Condition> using DisableIfAny = typename std::enable_if<!A
|
|||
|
||||
/// \cond
|
||||
namespace Detail {
|
||||
template <typename T, template <typename...> class Template> struct IsSpecializationOfHelper : Bool<false> {
|
||||
};
|
||||
template <template <typename...> class Template, typename... Args> struct IsSpecializationOfHelper<Template<Args...>, Template> : Bool<true> {
|
||||
};
|
||||
template <typename T, template <typename...> class Template> struct IsSpecializationOfHelper : Bool<false> {};
|
||||
template <template <typename...> class Template, typename... Args> struct IsSpecializationOfHelper<Template<Args...>, Template> : Bool<true> {};
|
||||
} // namespace Detail
|
||||
/// \endcond
|
||||
/// \brief Evaluates to Bool<true> if the specified type is based on the specified template; otherwise evaluates to Bool<false>.
|
||||
template <typename Type, template <typename...> class... TemplateTypes>
|
||||
struct IsSpecializationOf
|
||||
: Detail::IsSpecializationOfHelper<typename std::remove_cv<typename std::remove_reference<Type>::type>::type, TemplateTypes...> {
|
||||
};
|
||||
: Detail::IsSpecializationOfHelper<typename std::remove_cv<typename std::remove_reference<Type>::type>::type, TemplateTypes...> {};
|
||||
/// \brief Evaluates to Bool<true> if the specified type is based on one of the specified templates; otherwise evaluates to Bool<false>.
|
||||
template <typename Type, template <typename...> class... TemplateTypes> struct IsSpecializingAnyOf : Bool<false> {
|
||||
};
|
||||
template <typename Type, template <typename...> class... TemplateTypes> struct IsSpecializingAnyOf : Bool<false> {};
|
||||
/// \brief Evaluates to Bool<true> if the specified type is based on one of the specified templates; otherwise evaluates to Bool<false>.
|
||||
template <typename Type, template <typename...> class TemplateType, template <typename...> class... RemainingTemplateTypes>
|
||||
struct IsSpecializingAnyOf<Type, TemplateType, RemainingTemplateTypes...>
|
||||
: Conditional<IsSpecializationOf<Type, TemplateType>, Bool<true>, IsSpecializingAnyOf<Type, RemainingTemplateTypes...>> {
|
||||
};
|
||||
: Conditional<IsSpecializationOf<Type, TemplateType>, Bool<true>, IsSpecializingAnyOf<Type, RemainingTemplateTypes...>> {};
|
||||
|
||||
/// \brief Evaluates to Bool<true> if the specified type is any of the specified types; otherwise evaluates to Bool<false>.
|
||||
template <typename... T> struct IsAnyOf : Bool<false> {
|
||||
};
|
||||
template <typename... T> struct IsAnyOf : Bool<false> {};
|
||||
/// \brief Evaluates to Bool<true> if the specified type is any of the specified types; otherwise evaluates to Bool<false>.
|
||||
template <typename Type, typename OtherType, typename... RemainingTypes>
|
||||
struct IsAnyOf<Type, OtherType, RemainingTypes...> : Conditional<std::is_same<Type, OtherType>, Bool<true>, IsAnyOf<Type, RemainingTypes...>> {
|
||||
};
|
||||
struct IsAnyOf<Type, OtherType, RemainingTypes...> : Conditional<std::is_same<Type, OtherType>, Bool<true>, IsAnyOf<Type, RemainingTypes...>> {};
|
||||
/// \brief Evaluates to Bool<true> if the specified type is none of the specified types; otherwise evaluates to Bool<false>.
|
||||
template <typename... T> struct IsNoneOf : Bool<true> {
|
||||
};
|
||||
template <typename... T> struct IsNoneOf : Bool<true> {};
|
||||
/// \brief Evaluates to Bool<true> if the specified type is none of the specified types; otherwise evaluates to Bool<false>.
|
||||
template <typename Type, typename OtherType, typename... RemainingTypes>
|
||||
struct IsNoneOf<Type, OtherType, RemainingTypes...> : Conditional<std::is_same<Type, OtherType>, Bool<false>, IsNoneOf<Type, RemainingTypes...>> {
|
||||
};
|
||||
struct IsNoneOf<Type, OtherType, RemainingTypes...> : Conditional<std::is_same<Type, OtherType>, Bool<false>, IsNoneOf<Type, RemainingTypes...>> {};
|
||||
|
||||
/// \brief Evaluates to Bool<true> if the specified type is a C-string (char * or const char *); otherwise evaluates to Bool<false>.
|
||||
template <typename T>
|
||||
struct IsCString
|
||||
: Bool<std::is_same<char const *, typename std::decay<T>::type>::value || std::is_same<char *, typename std::decay<T>::type>::value> {
|
||||
};
|
||||
: Bool<std::is_same<char const *, typename std::decay<T>::type>::value || std::is_same<char *, typename std::decay<T>::type>::value> {};
|
||||
/// \brief Evaluates to Bool<true> if the specified type is a standard string, standard string view or C-string (char * or const char *); otherwise
|
||||
/// evaluates to Bool<false>.
|
||||
template <typename T>
|
||||
struct IsString
|
||||
: Bool<IsCString<T>::value || IsSpecializationOf<T, std::basic_string>::value || IsSpecializationOf<T, std::basic_string_view>::value> {
|
||||
};
|
||||
: Bool<IsCString<T>::value || IsSpecializationOf<T, std::basic_string>::value || IsSpecializationOf<T, std::basic_string_view>::value> {};
|
||||
|
||||
/// \brief Evaluates to Bool<true> if the specified type is complete; if the type is only forward-declared it evaluates to Bool<false>.
|
||||
template <typename T, typename = void> struct IsComplete : Bool<false> {
|
||||
};
|
||||
template <typename T, typename = void> struct IsComplete : Bool<false> {};
|
||||
/// \brief Evaluates to Bool<true> if the specified type is complete; if the type is only forward-declared it evaluates to Bool<false>.
|
||||
template <typename T> struct IsComplete<T, decltype(void(sizeof(T)))> : Bool<true> {
|
||||
};
|
||||
template <typename T> struct IsComplete<T, decltype(void(sizeof(T)))> : Bool<true> {};
|
||||
|
||||
/*!
|
||||
* \def CPP_UTILITIES_PP_COMMA
|
||||
|
|
Loading…
Reference in New Issue