[Interest] connect() is copying lambdas - can this be avoided?
Alejandro Exojo
alex at vikingsoft.eu
Wed Aug 9 23:19:32 CEST 2017
On Wednesday 09 August 2017 18:04:16 Nikos Chantziaras wrote:
> Is this a problem the Qt project is aware of and the design is intended,
> or is this something that can be considered a defect?
I wrote about something closely related to this a while ago in this list, and
some time after that, I mentioned the issue to Olivier Goffar, and he was
quite kind (and quick!) to fix it.
My problem back at that time, was that the lambda was being copied each time
the signal was emitted (not just on connect()), which made mutable lambdas
quite useless. This was fixed here:
https://codereview.qt-project.org/#/c/155546/
If you check the added unit test, it seems that not only they are aware, but
are verifying that the copy on connect happens:
QCOMPARE(emit o.returnInt(0), 1);
QCOMPARE(emit o.returnInt(0), 2); // each emit should increase the internal
count
QCOMPARE(functor.count, 0); // but the original object should have been copied
at connect time
--
Viking Software, Qt and C++ developers for hire
http://www.vikingsoft.eu
More information about the Interest
mailing list