История изменений
Исправление alysnix, (текущая версия) :
Ну вот по сути же те же array и vector одни и те же типы представляют - линейную коллекцию данных…
компилятор должен сгенерировать код вызова функций - например push_back() этих коллекций. но это разные функции для разных коллекций. они они только внешне выглядят одинаково. и поскольку он не понимает - какой обьект будет подставлен, он не знает какую функцию вызывать. то есть такие трюки не могут быть обрабаны компилятором. потому такие классы, с внешне одинаковыми функцяими не являются совместимыми.
но если будет шаблон, то компилдятор вычислит тип подставленного параметра и сгенерит код шаблона для данного типа, и будет уже знать - чей push_back в нем вызывать.
стандартные контейнеры в с++ имеют внешне одинаковые методы для того, чтобы по-простому писать темплейты с данными контейнерами, или легкой подмены одного контейнера другим в коде. то есть тип ручками поменял, а использующий код не поменялся, поскольку заголовки функций те же.
Исходная версия alysnix, :
Ну вот по сути же те же array и vector одни и те же типы представляют - линейную коллекцию данных…
компилятор должен сгенерировать код вызова функций - например push_back() этих коллекций. но это разные функции для разных коллекций. они они только внешне выглядят одинаково. и поскольку он не понимает - какой обьект будет подставлен, он не знает какую функцию вызывать. то есть такие трюки не могут быть обрабаны компилятором. потому такие классы, с внешне одинаковыми функцяими не являются совместимыми.
но если будет шаблон, то компилдятор вычислит тип подставленного параметра и сгенерит код шаблона для данного типа, и будет уже знать - чей push_back в нем вызывать.