Date: Thu, 19 Dec 2013 17:52:27 -0000
Hello UB-Experts,
as far as I can see the following (static_cast) is UB:
struct B {
int i;
};
struct D : B {
void foo() { /* access B::i */ }
};
B b;
static_cast<D&>(b).foo();
because of [expr.static.cast] clause 11
first question: is my assessment of the situation correct or is this use legal?
if it is not (legal): could we make it legal or would we run afoul of the aliasing rules?
best regards
Fabio
as far as I can see the following (static_cast) is UB:
struct B {
int i;
};
struct D : B {
void foo() { /* access B::i */ }
};
B b;
static_cast<D&>(b).foo();
because of [expr.static.cast] clause 11
first question: is my assessment of the situation correct or is this use legal?
if it is not (legal): could we make it legal or would we run afoul of the aliasing rules?
best regards
Fabio
-- Fabio Fracassi | ffracassi_at_[hidden]<mailto:ffracassi_at_[hidden]> Software Engineer ________________________________ think-cell Sales GmbH & Co. KG http://www.think-cell.com<http://www.think-cell.com/> Chausseestr. 8/E phone / fax +49 30 666473-10 / -19 10115 Berlin, Germany US phone / fax +1 800 891 8091 / +1 212 504 3039 Amtsgericht Berlin-Charlottenburg, HRA 44531 | European Union VAT Id DE815233792 General partner: think-cell Operations GmbH | Amtsgericht Berlin-Charlottenburg, HRB 129917 Directors: Dr. Markus Hannebauer, Dr. Arno Sch?dl
Received on 2013-12-19 18:52:27