Size: a a a

2020 August 11

MN

Mikhail Natalenko in supapro.cxx
Тут вся проблема, в том, что cpp файлы как правило имеют внутри себя определения, поэтому при инклуде ты можешь получить лишние копии, а это - тупик для линкера, так как он не может определить, кто из клонов настоящий. hpp файлы содержат только объявления, копирвоать объявления можно

upd: hpp файлы могут содержать и определения. хэдер-онли библиотеки так работают
источник

VS

Vladimir Suisei in supapro.cxx
Я могу с помощью шаблонов сделать класс который работает с std::variant, чтобы при создании класса передавались туда типы которые идут в вариант, и чтобы были функции типа get<T> чтобы он сам зарезолвил что такой тип существует в варианте?
Куда читать если я плохо шарю за все это?
источник

ПК

Побитый Кирпич... in supapro.cxx
Vladimir Suisei
Я могу с помощью шаблонов сделать класс который работает с std::variant, чтобы при создании класса передавались туда типы которые идут в вариант, и чтобы были функции типа get<T> чтобы он сам зарезолвил что такой тип существует в варианте?
Куда читать если я плохо шарю за все это?
Можешь. Что конкретно непонятно?
источник

VS

Vladimir Suisei in supapro.cxx
Побитый Кирпич
Можешь. Что конкретно непонятно?
Непонятно как не наломать дров в процессе
источник

ПК

Побитый Кирпич... in supapro.cxx
Vladimir Suisei
Непонятно как не наломать дров в процессе
Не понятно нафига ты это хочешь
источник

ПК

Побитый Кирпич... in supapro.cxx
Какая полезная нагрузка?
источник

VS

Vladimir Suisei in supapro.cxx
Побитый Кирпич
Какая полезная нагрузка?
Класс работает с вариантом сейчас через предефайнд список типов и функции типа getInt getString
Я хочу сделать лучше
источник

ПК

Побитый Кирпич... in supapro.cxx
Vladimir Suisei
Класс работает с вариантом сейчас через предефайнд список типов и функции типа getInt getString
Я хочу сделать лучше
Чем класс отличается от варианта?
источник

VS

Vladimir Suisei in supapro.cxx
Побитый Кирпич
Чем класс отличается от варианта?
Класс создает мапу из вариантов внутри согласно своей логике
источник

ПК

Побитый Кирпич... in supapro.cxx
Vladimir Suisei
Класс создает мапу из вариантов внутри согласно своей логике
Так, и что ты хочешь сделать? get<int>() вместо getInt?
источник

VS

Vladimir Suisei in supapro.cxx
Я хочу чтобы класс создавался
A<int, bool, std::string> ();
и при get<double> он бы не скомпилился
источник

ПК

Побитый Кирпич... in supapro.cxx
Vladimir Suisei
Я хочу чтобы класс создавался
A<int, bool, std::string> ();
и при get<double> он бы не скомпилился
Ок, вариант тут непричем значит
источник

VS

Vladimir Suisei in supapro.cxx
Ну и в скобках A чтобы было любое число параметров
источник

ПК

Побитый Кирпич... in supapro.cxx
Просто сохрани список типов в классе и чекай в get, что T содержится в списке
источник

VS

Vladimir Suisei in supapro.cxx
Побитый Кирпич
Ок, вариант тут непричем значит
С такими типами создается вариант, как не причем?
источник

ПК

Побитый Кирпич... in supapro.cxx
Хотя мне что то подсказывает что это уже есть в варианте
источник

ПК

Побитый Кирпич... in supapro.cxx
Vladimir Suisei
Я хочу чтобы класс создавался
A<int, bool, std::string> ();
и при get<double> он бы не скомпилился
По моей информации, это итак не должно компилиться
источник

ПК

Побитый Кирпич... in supapro.cxx
у variant уже есть эта compile time проверка
источник

VS

Vladimir Suisei in supapro.cxx
Побитый Кирпич
Просто сохрани список типов в классе и чекай в get, что T содержится в списке
Т.е. я пишу класс с префиксом template<typename... T> и передаю T в вариант при создании? И все будет работать?
источник

ПК

Побитый Кирпич... in supapro.cxx
Vladimir Suisei
Т.е. я пишу класс с префиксом template<typename... T> и передаю T в вариант при создании? И все будет работать?
не T, а Args, и передаёшь не T, а Args...
источник