Тут вся проблема, в том, что cpp файлы как правило имеют внутри себя определения, поэтому при инклуде ты можешь получить лишние копии, а это - тупик для линкера, так как он не может определить, кто из клонов настоящий. hpp файлы содержат только объявления, копирвоать объявления можно
upd: hpp файлы могут содержать и определения. хэдер-онли библиотеки так работают
Я могу с помощью шаблонов сделать класс который работает с std::variant, чтобы при создании класса передавались туда типы которые идут в вариант, и чтобы были функции типа get<T> чтобы он сам зарезолвил что такой тип существует в варианте? Куда читать если я плохо шарю за все это?
Я могу с помощью шаблонов сделать класс который работает с std::variant, чтобы при создании класса передавались туда типы которые идут в вариант, и чтобы были функции типа get<T> чтобы он сам зарезолвил что такой тип существует в варианте? Куда читать если я плохо шарю за все это?