Hey Alexander, deferred signal emission (or rather, deferred slot invocation) is a different topic. Wouldn't work well in my example, for the lack of an event loop. And object lifetime management would either way be a mess.
Suggest you check the link to the explanation of go that I included 🙂 Cheers, Volker ________________________________ From: Alexander Akulich <[email protected]> Sent: Thursday, March 7, 2019 6:24 PM To: Volker Hilsheimer Cc: Qt development mailing list Subject: Re: [Development] Go's "defer" statement for C++/Qt Hi Volker, I have no idea about Go, but deferred signal emission is somewhat useful in async programming (at least in my practice). In that case, there is a need to 'defer' execution to continue after the control is returned (usually in EventLoop via QMetaObject::invokeMethod(..., Qt::QueuedConnection). A cleaner approach would be appreciated. On Thu, Mar 7, 2019 at 8:02 PM Volker Hilsheimer <[email protected]> wrote: > > Ahoy, > > In what little development I’ve done in golang, I appreciated the “defer” > statement as a means to write cleaner code. Basically, defer schedules a > statement for execution when the stack unwinds. > > https://tour.golang.org/flowcontrol/12 > > We have several specialized helper classes in Qt for similar purposes, f.ex > QMutexLocker and friends, or the internal QBoolBlocker [1]. Seeing the > various specialized classes we have, I thought that something generic in Qt > could be useful to have (although our specialised classes provide some > additional convenience and/or logic). > > So, I pushed a few lines code to > > https://git.qt.io/vohilshe/qt_defer > > Would like to hear what you think. > > Perhaps someone can find ways to make this more elegant without introducing > tons of preprocessor/macro shenanigans, or perhaps even without depending on > C++17's implicit template argument deduction (without enabling C++17 in the > config this doesn't build for me, even though I don’t use auto in the > template paramter list). > > > Cheers, > Volker > > > [1] which was requested to be made public in > https://bugreports.qt.io/browse/QTBUG-38575 > > > _______________________________________________ > Development mailing list > [email protected] > https://lists.qt-project.org/listinfo/development
_______________________________________________ Development mailing list [email protected] https://lists.qt-project.org/listinfo/development
