> 1. It doesn't, obviously. If you emit signals, any signal argument must
>    be owning, or QueuedConnection cannot be used. Given that C++20
>    requires us to mark up views and non-owning ranges (enable_view,
>    enable_borrowed_range), I'm confident that we could detect attempts
>    to create such connections at compile- or, latest, at run-time, and
>    refuse them, or, since we need to serialize the arguments into a
>    QMetaCallEvent, anyway, also lifetime-pin, either by holding a weak
>    reference to the source object or by storing the data in the event in
>    an owning container.

I guess compile-time checks will be quite tricky, because we will need to check 
the threads
of both sender and receiver objects for the Qt::AutoConnection case.
Is it even possible at compile time?

As for the run-time check - I'm not a big fan of this approach either. It will 
be similar to the
metatype check that we have now (and which, I believe, is finally not needed 
with the latest
metatype changes). But I think that the code that compiles and runs, but then 
just refuses
to emit signals, is a potential source of errors and complaints.

> 3. Finally, the kinds of types I'm primarily thinking of in the context
>    of NOI are not Q_OBJECTS. It remains to be seen in which form or
>    shape co-routine-based reactive programming will complement or even
>    substitute signal/slots in the future.

But then we will still have all the Widgets/ItemModels/Netwroking and much more 
around.
And those will still use Qt containers.
So, I would personally agree with what Volker has proposed in his answer:

> We need to come up with a naming convention for getters that returns 
> std::span so that we can add those APIs as alternatives.
> And perhaps we want symmetry between setters and getters working on spans, 
> rather than making std::span setters overloads.

Best regards,
Ivan

_______________________________________________
Development mailing list
Development@qt-project.org
https://lists.qt-project.org/listinfo/development

Reply via email to