为什么 C++ 中模板的大小是 1 字节?

Why is the size of a template 1 Byte in C++?

使用using,可以定义类型的别名,并且这种类型的单元具有与原始实例(1) 相同的大小。然而,模板仅占 1 个字节 (2) 的权重。

using aliasOfInt = int;

template<typename T>
struct intWrapper {
    using wrappedAliasOfInt = T;
};


int main() {
    // (1) --> 4B
    std::cout << "sizeof(aliasOfInt)      = " << sizeof(aliasOfInt) << std::endl;

    // (2) --> 1B
    std::cout << "sizeof(intAliasWrapper) = " << sizeof(intWrapper<int>) << std::endl;
}

(2)中,有没有编译成real type或者为什么只有1B?

http://cpp.sh/3eiry

模板是一条红鲱鱼。这是一个没有数据成员的结构,不管T。由于 C++ 不允许 sizeof(anything)==0sizeof(intWrapper<int>) 必须大于 0。这使得大小 1 成为自然选择。