Hi,
I don't care much about when we remove these macros, as it makes sense
to keep using them in Qt 6 for code that will be backported to 5.
What I don't agree with is to go to extra lengths to deprecate (that
would be cutting our own flesh, if we retain the macros for the
above-mentioned use-case) or document-to-obsolete them. They weren't
documented for 16 out of the 16 Qt 5 releases. Why then should we
document the thing in 5.15.1? And, pretty please, decide NOW!
When and if we remove the Q_STATIC_ASSERT macros, there will hopefully
be a [ChangeLog]. That's a much more fitting place for a macro
deprecation/removal notice. We can reasonably expect people to read
these. Who, otoh, would go to the API reference to look at macro
definitions to see which ones are new \obsolete. That makes no sense.
Thanks,
Marc
On 2020-06-11 11:11, Edward Welbourne wrote:
Hi all,
On [0] there is discussion of deprecating these two macros, or even
outright removing them in Qt 6. I see the sense of deprecation, on dev
at least, since we expect C++17, in which static_assert() does the
whole
job. Since they're macros, I know of no way to tell the compiler to
warn about their use, so the only deprecation we can do is in the
documentation - that doesn't yet exist; that's what [0] is seeking to
fix. So the deprecation would simply be a matter of marking them
\obsolete; in 5.15, we can mark the two-arg form as obsolete (since
static_assert(cond, msg) exists in C++11) but not the single-arg form.
[0] https://codereview.qt-project.org/c/qt/qtbase/+/303218
I also note that there's non-trivial #if-ery, still on dev, to support
compilers/platforms on which static_assert isn't available. I have to
suppose that is redundant, given that we expect a C++11 compiler in
5.15
and static_assert() is a compiler feature, not a standard library one
(where we allow some gaps on C++11, IIUC). So does anyone believe that
#if-ery is actually still needed - i.e. does anyone believe there is a
platform for which Q_COMPILER_STATIC_ASSERT *doesn't* get defined in
qcompilerdetection.h ?
Assuming there's no such platform, I propose to rip out (from both dev
and 5.15) Q_COMPILER_STATIC_ASSERT on the premise that it's always
defined and we can always use static_assert (or, in C, _Static_assert).
That then leaves the question of whether we deprecate in Qt 6 or remove
these macros. I shall leave Marc, who I understand as wanting the
latter option, to make the case for it, lest I misrepresent that case.
Are there any compelling reasons to just document these macros and
retain them, without marking as \obsolete in the docs ?
Eddy.
_______________________________________________
Development mailing list
Development@qt-project.org
https://lists.qt-project.org/listinfo/development
_______________________________________________
Development mailing list
Development@qt-project.org
https://lists.qt-project.org/listinfo/development