Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
auto spy = createSignalSpy(&signalSource, &SignalClass::someSignal);
{
double a = 3.2;
int b = 4;
signalSource.f(a, b);
}
std::cout<<get<0>(spy.calls.front())<<"\n";
std::cout<<get<1>(spy.calls.front())<<"\n";
QList<std::tuple<const sttring&> > m_calls;
^^^ ссылка
decay, чтобы отбросить ссылку в контейнереQObject передается по ссылке? Обычно по указателю.часто ли QObject передается по ссылке? Обычно по указателю.
С некопируемыми объектами оно не будет работать явно
а с битами ссылками оно будет работать непредсказуемо. Первый вариант гораздо лучше.
Если человек передаёт указатель, то он вполне может ожидать, что объект, на который указатель указывает, не будет скопирован. А для ссылок это поведение не естественно, этого никто не ожидает. А код должен вести себя предсказуемо, тем более что ваш класс будут использовать с новым, не проверенным кодом. В таком случае ошибки, скорее всего, будут искать совсем не в том месте.
Если брать Qt подход, то у них ссылки не сохраняются в принципе, если передается что-то, что можно сохранять, то передается указатель (посмотрите mutexlocker, filestream, например)
Строго-типизированный SignalSpy для тестирования Qt приложений