类的大小与封闭模板类的大小

时间:2014-05-15 17:46:56

标签: c++ templates sizeof

请考虑以下代码:

class Foo
{
    ...
};

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

是否保证sizeof(Foo) == sizeof(Bar<Foo>)始终在任何标准C ++编译器中评估为true

是否存在上述情况永远不会成立的情况?

1 个答案:

答案 0 :(得分:5)

我认为该标准不能保证 - 实现可以在Bar结束时自由添加填充。

但很难理解为什么任何真正的实现都会在Bar结束时添加填充,而不是Foo。除非,例如,Foo明确给出了一些非默认对齐(例如字节对齐);然后将Bar填充到默认路线。