On Wednesday, 29 May 2019 08:17:15 PDT Mutz, Marc via Development wrote: > But of course, that's a fallacy, because as soon as Qt internally uses > said inline functions, every use of them by the user with a different > STL is an ODR violation and therefore UB. So, again AFAICT, the decision > was that we can use std types in the API now, even when not inline.
That's not correct. Keeping from the ODR violation is exactly why libc++ uses std::__1 namespace for its types. This allows for perfectly and strictly correct separation between a Qt internal use of std::vector and the user's use of std::__1::vector. *Some* symbols aren't namespaced, like std::exception and std::type_info. But that's still not an ODR violation because the two implementations are strictly compatible: the layout is the same. That's true too for the the classes in the abi namespace, like abi::__si_class_type_info. There's a requirement on how the two libraries are built, but if it's wrong, it's just a distribution issue. > Someone correct me if I'm wrong. Done. -- Thiago Macieira - thiago.macieira (AT) intel.com Software Architect - Intel System Software Products _______________________________________________ Development mailing list Development@qt-project.org https://lists.qt-project.org/listinfo/development