Здравствуйте, ABK, Вы писали:
ABK>Добрый день!
ABK>Подскажите, пожалуйста, как компилятор VS 6.0 поведёт себя со следующим шаблоном:
ABK>ABK>template <class T> CList
ABK>{
ABK>public:
ABK> // ...
ABK>private:
ABK> T* pT;
ABK>};
ABK>
ABK> Внутри шаблона будет присутствовать только указатель на T. В коде программы будут использоваться, скажем, CList<CString> и CList<CNumeric>. Интересует, будет ли компилятор создавать 2 разных класса CList<CString> и CList<CNumeric>, или же код останется один, но просто будут правильно приводиться типы?
Для каждого типа создается свой тип и свой набор функций.
Приведение типа здесь не применяется.
С этим обстоятельством есть проблема, скажем для CList<int> и CList<long> даже когда sizeof(int)==sizeof(long) будут созданны 2 разных класса.
К счастью компиляторы умеют оптимизировать подобные конструкции.