summaryrefslogtreecommitdiffstats
path: root/libraries/logic/TypeMagic.h
diff options
context:
space:
mode:
Diffstat (limited to 'libraries/logic/TypeMagic.h')
-rw-r--r--libraries/logic/TypeMagic.h37
1 files changed, 0 insertions, 37 deletions
diff --git a/libraries/logic/TypeMagic.h b/libraries/logic/TypeMagic.h
deleted file mode 100644
index fa9d12a9..00000000
--- a/libraries/logic/TypeMagic.h
+++ /dev/null
@@ -1,37 +0,0 @@
-#pragma once
-
-namespace TypeMagic
-{
-/** "Cleans" the given type T by stripping references (&) and cv-qualifiers (const, volatile) from it
- * const int => int
- * QString & => QString
- * const unsigned long long & => unsigned long long
- *
- * Usage:
- * using Cleaned = Detail::CleanType<const int>;
- * static_assert(std::is_same<Cleaned, int>, "Cleaned == int");
- */
-// the order of remove_cv and remove_reference matters!
-template <typename T>
-using CleanType = typename std::remove_cv<typename std::remove_reference<T>::type>::type;
-
-/// For functors (structs with operator()), including lambdas, which in **most** cases are functors
-/// "Calls" Function<Ret(*)(Arg)> or Function<Ret(C::*)(Arg)>
-template <typename T> struct Function : public Function<decltype(&T::operator())> {};
-/// For function pointers (&function), including static members (&Class::member)
-template <typename Ret, typename Arg> struct Function<Ret(*)(Arg)> : public Function<Ret(Arg)> {};
-/// Default specialization used by others.
-template <typename Ret, typename Arg> struct Function<Ret(Arg)>
-{
- using ReturnType = Ret;
- using Argument = Arg;
-};
-/// For member functions. Also used by the lambda overload if the lambda captures [this]
-template <class C, typename Ret, typename Arg> struct Function<Ret(C::*)(Arg)> : public Function<Ret(Arg)> {};
-template <class C, typename Ret, typename Arg> struct Function<Ret(C::*)(Arg) const> : public Function<Ret(Arg)> {};
-/// Overload for references
-template <typename F> struct Function<F&> : public Function<F> {};
-/// Overload for rvalues
-template <typename F> struct Function<F&&> : public Function<F> {};
-// for more info: https://functionalcpp.wordpress.com/2013/08/05/function-traits/
-}