Предположим, у меня есть шаблонный класс, в котором я делаю сотни, даже тысячи глубоких копий одного экземпляра. Насколько я понимаю, компилятор будет вставлять этот класс везде, где он будет использоваться - это может вызвать раздувание кода. Но делает ли это приведенный ниже пример? Если моя программа использует только одну «версию» шаблона класса (в приведенном ниже примере, который я использовал 3), код все еще будет иметь место.
#include <array>
template <int N>
class Example {
public:
std::array<int, N> parameter;
Example(std::array<int, N> value){
parameter = value;
};
~Example(){};
};
int main()
{
std::array<int, 3> simple = {1, 2, 3};
Example<3> * primitive = new Example<3>(simple);
for(int i=0; i<100; ++i){
new Example<3>(*primitive);
}
// Leak everything
return 0;
}