On Wednesday, 15 July 2020 13:20:33 PDT Thiago Macieira wrote:
> In addition, I'd like someone to explain here:
[snip]
5) How you're going to fix the UB in the code generated by moc. This requires
a satisfactory answer of C++17 or C++2a strictly compliant code, or we'll have
to stop using this feature.
moc generates:
Type Klass::_qt_property_api_propertyName::value() const
{
const size_t propertyMemberOffset =
reinterpret_cast<size_t>(&(static_cast<Klass *>(nullptr)->propertyName));
const auto *thisPtr = reinterpret_cast<const Klass *>(
reinterpret_cast<const char *>(this) - propertyMemberOffset);
return thisPtr->d_func()->property.value();
}
The first two lines of this function are UB.
It MUST be fixed.
In the process, please also fix this code:
auto prop = object->propertyName;
return prop.value();
--
Thiago Macieira - thiago.macieira (AT) intel.com
Software Architect - Intel System Software Products
_______________________________________________
Development mailing list
[email protected]
https://lists.qt-project.org/listinfo/development