struct NullType
{};
template <
typename X,
typename Y,
typename Z = NullType,
typename W = NullType>
struct Caster
{
X x;
Y y;
Z z;
W w;
};
int main()
{
::printf("%d\n", sizeof(NullType));
::printf("%d\n", sizeof(Caster));
::printf("%d\n", sizeof(Caster));
::printf("%d\n", sizeof(Caster));
::printf("%d\n", sizeof(Caster));
}
There is nothing new in this post. You can find the null type in "Modern C++ design". But the output is really funny (compile with vc9) :
1
4
12
12
4
So...Nulltype occupy 1 byte even it`s null. And it follow a special padding rule (which I`m not interested in now XD).
1 comment:
the behavior of syntax highlighter for this kind of code is really funny. XD
Post a Comment