48 explicit ScopeGuard(std::function<
void() > onScopeExit) { m_onScopeExit = onScopeExit; }
52 void dismiss() { m_invoke =
false; };
54 std::function<void()> m_onScopeExit;
58#define SCOPEGUARD_LINENAME_CAT(name, line) name##line
59#define SCOPEGUARD_LINENAME(name, line) SCOPEGUARD_LINENAME_CAT(name, line)
61#define OnScopeExit( callback ) ScopeGuard SCOPEGUARD_LINENAME( myScopeGuard, __LINE__ ) ( [&] { callback; } );
63template <
typename Container,
typename Pred>
64Container filter(
const Container& container, Pred predicate) {
66 for (
const auto& item : container) {
67 if (predicate(item)) {
68 result.push_back(item);
77quint64 imageSize(
const QImage&);