Я слышал о разворотах кода в контексте шаблонов С++. Я знаю, что это не так с современными компиляторами С++. Но я хочу построить пример и убедить себя.
Допустим, что у нас есть класс
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: Что касается раздувания, я беспокоюсь даже о малейшем раздувании, поскольку я исхожу из встроенного контекста.
Дополнение: меняется ли ситуация, если классы шаблонов явно создаются?