QNetworkRequest: export the static constexpr (inline) member variables
All that is required is that we write the declaration as if they weren't
inline, like we used to for C++98 non-constexpr static members. Amends
090991123d.
This is required with MinGW and happens with both GCC and Clang: when a
static constexpr variable found in an exported class is used in a
context that requires getting its address, the compiler emit a DLL-
importing statement. For example:
void f(const std::chrono::milliseconds &ms);
void f()
{
f(QNetworkRequest::DefaultTransferTimeout);
}
Emits with GCC:
_Z1fv:
movq __imp__ZN15QNetworkRequest22DefaultTransferTimeoutE(%rip), %rcx
jmp _Z1fRKNSt6chrono8durationIxSt5ratioILx1ELx1000EEEE
And Clang:
_Z1fv: # @_Z1fv
# %bb.0:
movq __imp__ZN15QNetworkRequest22DefaultTransferTimeoutE(%rip), %rcx
jmp _Z1fRKNSt6chrono8durationIxSt5ratioILx1ELx1000EEEE # TAILCALL
Pick-to: 6.7
Fixes: QTBUG-121135
Change-Id: I76ffba14ece04f24b43efffd17aae1a98071c570
Reviewed-by: Juha Vuolle <juha.vuolle@qt.io>
Reviewed-by: André Klitzing <aklitzing@gmail.com>
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
bb10
parent
f3305ae07c
commit
c09219e946
|
|
@ -30,6 +30,8 @@ QT_BEGIN_NAMESPACE
|
|||
using namespace Qt::StringLiterals;
|
||||
using namespace std::chrono_literals;
|
||||
|
||||
constexpr std::chrono::milliseconds QNetworkRequest::DefaultTransferTimeout;
|
||||
|
||||
QT_IMPL_METATYPE_EXTERN(QNetworkRequest)
|
||||
QT_IMPL_METATYPE_EXTERN_TAGGED(QNetworkRequest::RedirectPolicy, QNetworkRequest__RedirectPolicy)
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue