Created on 2016-01-13.00:00:00 last changed 81 months ago
Proposed resolution (January, 2017):
Change 7.6.1.9 [expr.static.cast] paragraph 2 as follows:
...If the object of type “cv1 B” is actually a base class subobject of an object of type D, the result refers to the enclosing object of type D. Otherwise, the behavior is undefined. [Example:...
[Adopted at the February/March, 2017 meeting.]
The current wording of 7.6.1.9 [expr.static.cast] paragraph 2 appears to permit the following example:
struct B {
int i;
};
struct D : B {
int j;
B b;
};
int main() {
D d;
B &br = d.b;
D &dr = static_cast<D&>(br); // Okay?
}
Presumably such casts should only be supported if the operand object is a base class subobject, not a member subobject.
History | |||
---|---|---|---|
Date | User | Action | Args |
2018-02-27 00:00:00 | admin | set | status: tentatively ready -> c++17 |
2017-02-06 00:00:00 | admin | set | messages: + msg5732 |
2016-01-13 00:00:00 | admin | create |