Domanda

Consider the code below:

class Foo
{
    ...
};

template <class T>
class Bar
{
    T t;
};

Is it guaranteed that sizeof(Foo) == sizeof(Bar<Foo>) always evaluates to true across any standard C++ compiler?

Are there any situations in which the above condition would never be true?

È stato utile?

Soluzione

I don't believe the standard makes that guarantee - an implementation is free to add padding at the end of Bar.

But it's hard to see why any real implementation would add padding at the end of Bar but not Foo. Unless, say, Foo was explicitly given some non-default alignment (e.g. byte aligned); Bar would then be padded to the default alignment.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top