Вдохновленный этим ответом о динамическом нажатии на void*
:
... bool eqdc(B* b1, B *b2) { return dynamic_cast<void*>(b1) == dynamic_cast<void*>(b2); } ... int main() { DD *dd = new DD(); D1 *d1 = dynamic_cast<D1*>(dd); D2 *d2 = dynamic_cast<D2*>(dd); ... eqdc(d1, d2) ...
Мне интересно, полностью ли определено поведение С++ (согласно стандарту 03 или 11) на сравнить два указателя void для (in) равенства, которые указывают на действительные, но разные объекты.
В целом, но, возможно, не так важно, сравнивает (==
или !=
) два значения типа void*
, которые всегда определены, или требуется, чтобы они удерживали указатель на действительную область объекта/памяти?