[Development] QProperty and library coding guide
Thiago Macieira
thiago.macieira at intel.com
Fri Jul 17 19:55:53 CEST 2020
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
More information about the Development
mailing list