[Development] Go's "defer" statement for C++/Qt

Volker Hilsheimer volker.hilsheimer at qt.io
Thu Mar 7 18:01:14 CET 2019


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.


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


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).


[1] which was requested to be made public in https://bugreports.qt.io/browse/QTBUG-38575

More information about the Development mailing list