We certainly shouldn’t start documenting the macros now in 5.15.1. 

IMO they should simply unconditionally expand to static_assert(). I’d also be 
ok if someone wants to do a search and replace s/Q_STATIC_ASSERT/static_assert/ 
in our source code. 

But I don’t think we should do much more right now. Adding a deprecation 
warning to the macros is something we probably can do sometime later in 6.x 
when people are not porting over from 5.15 anymore.

Cheers,
Lars

> On 11 Jun 2020, at 12:46, Marc Mutz via Development 
> <development@qt-project.org> wrote:
> 
> 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

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

Reply via email to