【发布时间】:2010-05-27 04:15:17
【问题描述】:
我听说过 C++ 模板上下文中的代码膨胀。我知道现代 C++ 编译器并非如此。但是,我想构建一个例子并说服自己。
假设我们有一个类
template< typename T, size_t N >
class Array {
public:
T * data();
private:
T elems_[ N ];
};
template< typename T, size_t N >
T * Array<T>::data() {
return elems_;
}
此外,假设types.h 包含
typedef Array< int, 100 > MyArray;
x.cpp 包含
MyArray ArrayX;
和y.cpp 包含
MyArray ArrayY;
现在,我如何验证MyArray::data() 的代码空间对于ArrayX 和ArrayY 是否相同?
我还应该从这个(或其他类似的简单)示例中了解和验证什么?如果有任何 g++ 特定的提示,我也对此感兴趣。
PS:关于膨胀,我什至担心最轻微的膨胀,因为我来自嵌入式上下文。
补充:如果模板类被显式实例化,情况是否会发生变化?
【问题讨论】:
标签: c++ templates compiler-construction g++