Шаблоны C ++ — использование кода, размер двоичного файла

Меня интересует размер кода шаблона кода.
Пожалуйста, рассмотрите следующий код

template<typename T>
class vector
{
public:

vector(size_t size) :
{
array = NEW T[size];
}uint32_t push_back(T value)
{
... adding value to array and possible array realloction..
}

private:
T * array;
}

Когда у меня есть два векторных экземпляра,

vector<float> v1;
vector<int> v2;

будет ли он скомпилирован в двоичный файл с двумя push_back реализации

push_back(float)
push_back(int)

или только один или что-то еще?

Можно ли уменьшить размер кода с помощью шаблонов вместо отдельных классов для float а также int?

0

Решение

Классы и функции, созданные из шаблонов, не имеют никакого отношения между ними во время выполнения, и, таким образом, функции будут дублироваться.

Некоторые компиляторы оптимизируют удаленный / дублированный код, но область этой оптимизации шире, чем экземпляры шаблонов.

Обратите внимание, что даже если код выглядит одинаково, он может вызывать различные вызовы функций при использовании определенных операторов.

Это особенно заметно для контейнеров с указателями, таких как std::vector<int*> а также std::vector<char*>, вы получите разные функции для обоих, хотя их поведение практически идентично.

Подводя итог, можно сказать, что шаблоны отлично подходят для уменьшения размера кода, но создание множества различных экземпляров приведет к увеличению размера вашего двоичного файла.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]