LINUX.ORG.RU

История изменений

Исправление safocl, (текущая версия) :

нечитая ответов скажу, что в случае с шаблонами, вынесение реализации в отдельный файл геморное занятие. Получается, что у тебя объектник по stream.cpp пустой вообще. Шаблоны не являются типами. Они могут «превратиться» в тип — инстанциироваться. Существует «автоматическая» и «ручная» инстанциация — первая происходит если использовать в запускаемом коде шаблон с указанием его аргументов, вторая происходит если вручную сделать инстанциацию подобно описанию специализации шаблона (на самом деле специализация шаблона так же и производит ручную инстанциацию).
В stream.cpp у тебя нет ручной инстанциации, по этому и пустым получается объектник — выход либо использовать хедер-онли либу stream.h, либо делать ручную инстанциацию в stream.cpp для определенных типов, что неудобно и неуниверсально (придется для каждого используемого в аргументах шаблонов значений изменять код в stream.cpp, что анулирует многие преимущества шаблонов).

Исходная версия safocl, :

нечитая ответов скажу, что в случае с шаблонами, вынесение реализации в отдельный файл геморное занятие. Получается, что у тебя объектник по stream.cpp пустой вообще. Шаблоны не являются типами. Они могут «превратиться» в тип — инстанциироваться. Существует «автоматическая» и «ручная» инстанциация — первая происходит если использовать в запускаемом коде шаблон с указанием его аргументов, вторая происходит если вручную сделать инстанциацию подобно описанию специализации шаблона.
В stream.cpp у тебя нет ручной инстанциации, по этому и пустым получается объектник — выход либо использовать хедер-онли либу stream.h, либо делать ручную инстанциацию в stream.cpp для определенных типов, что неудобно и неуниверсально (придется для каждого используемого в аргументах шаблонов значений изменять код в stream.cpp, что анулирует многие преимущества шаблонов).