Вопрос такой: есть ли гарантия, что если сигнал вызывается с ссылкой на обьект а слот тоже принимает ссылку, то сам обьект не будет копирован где-нибудь посередине?
Т.е. пример кода будет выглядеть так:
struct Foo { char data[500]; }
class Emitter : public QObject {
Q_OBJECT
signals:
void makeFoo() {
foo.emplace_back();
emit fooCreated(foo.back());
}
void fooCreated(Foo &);
private:
std::vector<Foo> foo;
};
class Receiver : public QObject {
Q_OBJECT
public slots:
void onFooCreated(const Foo &) {}
};
void run() {
Emmiter e;
Receiver r;
QObject::connect(&e, &Emitter::fooCreated,
&r, &Receiver::onFooCreated);
e.makeFoo();
}
А вопрос для данног фрагмента кода: есть ли гарантии, что Foo не будет скопирован? (зависит ли копирование от типа соединения в QObject::connect)