
8 Jun
2009
8 Jun
'09
1:52 p.m.
Kizza George Mbidde: ...
typedef char type_must_be_complete[ sizeof(T)? 1: -1 ]; (void) sizeof(type_must_be_complete); delete x;
...
* What's the result of applying sizeof to an incomplete type?
A compile-time error, unless the compiler chooses to return 0 as a nonstandard extension.
* Why is sizeof called twice?
The second sizeof is a workaround for a Metrowerks CodeWarrior bug in which the first typeof is never instantiated unless used.
* Why is the result of sizeof cast to void? What exactly does that line do?
Silences a compiler warning.
* Is it an empty statement if the sizeof is legal?
Yes.
* Why not apply x = 0; at the end?
It wouldn't do anything as x is passed by value. -- Peter Dimov http://www.pdplayer.com