aboutsummaryrefslogtreecommitdiff
path: root/lib/util.h
diff options
context:
space:
mode:
authorAlexey Rusakov <Kitsune-Ral@users.sf.net>2022-06-18 10:35:48 +0200
committerAlexey Rusakov <Kitsune-Ral@users.sf.net>2022-06-21 17:57:05 +0200
commit34ff85b715b377c4b2a8e30b1af8327aa7928e36 (patch)
tree0fd452859b8c3c6619ab1d3704879de4e6dc7f95 /lib/util.h
parent23672cbb025814f2d8d6960f72ab602ef7a55b41 (diff)
downloadlibquotient-34ff85b715b377c4b2a8e30b1af8327aa7928e36.tar.gz
libquotient-34ff85b715b377c4b2a8e30b1af8327aa7928e36.zip
Move out Overloads to util.h
...instead of tucking the template in filesourceinfo.cpp where it surely will be forgotten.
Diffstat (limited to 'lib/util.h')
-rw-r--r--lib/util.h13
1 files changed, 13 insertions, 0 deletions
diff --git a/lib/util.h b/lib/util.h
index d1623881..8a30f457 100644
--- a/lib/util.h
+++ b/lib/util.h
@@ -170,6 +170,19 @@ constexpr ImplPtr<ImplType> ZeroImpl()
return { nullptr, [](ImplType*) { /* nullptr doesn't need deletion */ } };
}
+//! \brief Multiplex several functors in one
+//!
+//! This is a well-known trick to wrap several lambdas into a single functor
+//! class that can be passed to std::visit.
+//! \sa https://en.cppreference.com/w/cpp/utility/variant/visit
+template <typename... FunctorTs>
+struct Overloads : FunctorTs... {
+ using FunctorTs::operator()...;
+};
+
+template <typename... FunctorTs>
+Overloads(FunctorTs&&...) -> Overloads<FunctorTs...>;
+
/** Convert what looks like a URL or a Matrix ID to an HTML hyperlink */
QUOTIENT_API void linkifyUrls(QString& htmlEscapedText);