aboutsummaryrefslogtreecommitdiff
path: root/libs/installer_omod/src/QObject_unique_ptr.h
blob: e6f9395a6b5569f0386c4ecf745cd9e59417a120 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#pragma once

#include <QObject>

static inline void deleteQObjectLater(QObject* qObject) { qObject->deleteLater(); }

template <typename T>
using QObject_unique_ptr = std::unique_ptr<T, decltype(&deleteQObjectLater)>;

template <typename T, typename... Args>
QObject_unique_ptr<T> make_unique(Args&&... args)
{
  return QObject_unique_ptr<T>(new T(std::forward<Args>(args)...), &deleteQObjectLater);
}

template <typename T>
QObject_unique_ptr<T> make_nullptr()
{
  return QObject_unique_ptr<T>(nullptr, &deleteQObjectLater);
}