On Friday, 28 April 2017 12:50:41 -03 Mat Sutcliffe wrote: > tldr: MSVC expects to see linker symbols for inline member functions of > exported classes. When such a function is defined within #ifdef > Q_COMPILER_foo (being a macro that is defined for 2017 but not 2015) this > could mean linker errors. Unknown if this effect has actually been observed > or is merely theoretical.
Thanks Mat. If this is the only issue, then it's only a potential issue that will not affect us. There's exactly one Q_COMPILER_foo macro that is in 2017 that isn't in 2015: Q_COMPILER_CONSTEXPR And the totality of its use in public headers, aside from the definition in qcompilerdetection.h, is: - qtbase/src/corelib/thread/qbasicatomic.h #elif defined(Q_COMPILER_ATOMICS) && (defined(Q_COMPILER_CONSTEXPR) || defined(Q_OS_QNX)) # include <QtCore/qatomic_cxx11.h> // We only support one fallback: MSVC, because even on version 2015, it lacks full constexpr support #elif defined(Q_CC_MSVC) # include <QtCore/qatomic_msvc.h> [...] #if defined(Q_COMPILER_CONSTEXPR) && defined(Q_COMPILER_DEFAULT_MEMBERS) && defined(Q_COMPILER_DELETE_MEMBERS) # define QT_BASIC_ATOMIC_HAS_CONSTRUCTORS #endif - qtbase/src/corelib/arch/qatomic_cxx11.h #if defined(Q_COMPILER_CONSTEXPR) && defined(Q_COMPILER_DEFAULT_MEMBERS) && defined(Q_COMPILER_DELETE_MEMBERS) # define Q_BASIC_ATOMIC_INITIALIZER(a) { a } #else # define Q_BASIC_ATOMIC_INITIALIZER(a) { ATOMIC_VAR_INIT(a) } #endif - qtbase/src/corelib/global/qnamespace.h #if defined(Q_COMPILER_CLASS_ENUM) && defined(Q_COMPILER_CONSTEXPR) enum class Initialization { Uninitialized }; static constexpr Q_DECL_UNUSED Initialization Uninitialized = Initialization::Uninitialized; #else enum Initialization { Uninitialized }; #endif None of those affect an exported class. -- Thiago Macieira - thiago.macieira (AT) intel.com Software Architect - Intel Open Source Technology Center _______________________________________________ Development mailing list Development@qt-project.org http://lists.qt-project.org/mailman/listinfo/development