Новый сигнал Qt5 к утечке памяти лямбда-соединений

Новый синтаксис сигналов и слотов Qt5 позволяет нам связывать сигналы не только со слотами, но и с простыми старыми функциями и функторами / лямбдами. Теперь проблема в том, что лямбды являются объектами с оператором (), и когда вы подключаете к ним сигналы, они копируются куда-то во внутренние классы qt. И когда вы отсоединяете сигнал от этого функтора, он остается внутри qt. Я не понимаю, это нормальное поведение? Или, может быть, есть способ уничтожить эти функциональные объекты после отключения?

Вот'Вот пример:

//example

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

    QTimer* timer = new QTimer();

    QSharedPointer connection(new QMetaObject::Connection());

    //functor is created and gets copied inside qt internals, connection variable is captured
    //inside the functor

    *connection.data() = QObject::connect(timer, &QTimer::timeout, [=]
    {
        qDebug() < "disconnected";
        QObject::disconnect(*connection.data());
    });

    timer->start(10000);

    return a.exec();
}

//example

Ответы на вопрос(1)

Ваш ответ на вопрос