e996253774
MSVC will export any function in an exported class, including inline ones. Conversely: client code calling inline functions in imported classes will end up simply calling the symbol of the function, even if the function is fully inline. This is a problem for adding post-C++17 APIs in Qt. Such APIs are added as inline functions protected by feature-macro tests, so that both Qt and client apps can use any C++ version they want (any combination works). However, if we add a function using post-C++17 API to an exported class, then the combination "Qt built in C++17" + "client built in post-C++17" won't work any more. The client will expect the symbol for that function to be exported by Qt, but Qt won't have it (built in C++17). As a workaround, add a marker that turns these functions into "faux templates", like Q_WEAK_OVERLOAD does. Change-Id: I2adab81e3129c881c5a8e0772948b176fa4db1b6 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> |
||
---|---|---|
.github/workflows | ||
bin | ||
cmake | ||
coin | ||
config.tests | ||
dist | ||
doc | ||
examples | ||
lib | ||
libexec | ||
mkspecs | ||
qmake | ||
src | ||
tests | ||
util | ||
.cmake.conf | ||
.gitattributes | ||
.gitignore | ||
.lgtm.yml | ||
.tag | ||
CMakeLists.txt | ||
conanfile.py | ||
config_help.txt | ||
configure | ||
configure.bat | ||
configure.cmake | ||
dependencies.yaml | ||
LICENSE.FDL | ||
LICENSE.GPL2 | ||
LICENSE.GPL3 | ||
LICENSE.GPL3-EXCEPT | ||
LICENSE.LGPL3 | ||
LICENSE.QT-LICENSE-AGREEMENT | ||
qt_cmdline.cmake | ||
sync.profile |