unittest
{
foreach (Type; TypesWithLayout)
foreach (idx, field; Type.init.tupleof) {
auto object = Type.init;
auto field_info = cppFieldInfo(object,
Type.tupleof[idx].stringof.toStringz);
assert(typeof(field).sizeof == field_info.size,
format("Field '%s' of '%s' size mismatch: %s (D) != %s (C++)",
Type.tupleof[idx].stringof, Type.stringof,
typeof(field).sizeof, field_info.size));
assert(Type.tupleof[idx].offsetof == field_info.offset,
format("Field '%s' of '%s' offset mismatch: %s (D) != %s (C++)",
Type.tupleof[idx].stringof, Type.stringof,
Type.tupleof[idx].offsetof, field_info.offset));
}
}