Thank you Kjell, I have overlooked that slot<> itself is not movable. I don't need a branch for this, can live without movable slots for now.
On 10/23/2015 08:48 PM, Kjell Ahlstedt wrote: > There are move constructors and move assignment operators for sigc::slot_base > and sigc::slot1<> .. sigc::slot7<>, but none for sigc::slot<>. See > https://bugzilla.gnome.org/show_bug.cgi?id=756484. Adding them would mean > adding API, which will have to wait until libsigc++ 2.7.x. Like I say in > comment 4 in the bug report, I can create a libsigc-2-6 branch and push the > patch to the master branch now, if you want it now, and is willing to use the > latest code from the git repository. > > Kjell > > Den 2015-10-23 kl. 14:01, skrev Andrejs Hanins: >> Hi, >> >> I noticed that both in 2.6.1 and current trunk (cabc88f) the move >> constructor for the slot is not selected by the compiler (gcc 4.9 and 4.8.4 >> tried) even in the most trivial case. Take test_slot_move.cc unit test for >> example: >> >> sigc::slot<void,int> s2(std::move(s1)); >> >> If you now do (bool)s1 it will evaluate to 'true'. Also s1() works and calls >> foo() as if s1 wasn't moved to s2. I tried to add traces to slot1 copy and >> move constructors and indeed only copy constructor is called, but not move. >> So, something is wrong here - either compiler bug (unlikely) or some code in >> the slot/slot_base/functor_base prevents compiler from selecting move >> semantics for constructor. >> >> BR, Andrey >> _______________________________________________ >> > _______________________________________________ libsigc-list mailing list libsigc-list@gnome.org https://mail.gnome.org/mailman/listinfo/libsigc-list