diff options
author | Alexey Rusakov <Kitsune-Ral@users.sf.net> | 2022-06-18 10:35:48 +0200 |
---|---|---|
committer | Alexey Rusakov <Kitsune-Ral@users.sf.net> | 2022-06-21 17:57:05 +0200 |
commit | 34ff85b715b377c4b2a8e30b1af8327aa7928e36 (patch) | |
tree | 0fd452859b8c3c6619ab1d3704879de4e6dc7f95 /lib/util.h | |
parent | 23672cbb025814f2d8d6960f72ab602ef7a55b41 (diff) | |
download | libquotient-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.h | 13 |
1 files changed, 13 insertions, 0 deletions
@@ -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); |