Size: a a a

2020 August 20

R

Ruben in pro.cxx
Типа auto response = parseResponse(data, size);
источник

VS

Vlad Serebrennikov in pro.cxx
думаю, без type erasure в каком-то виде не обойдется
источник

S

Sasha in pro.cxx
Ruben
Есть нужда сделать фунцию, которая в зависимости от значения (не типа!) аргумента будет возвращать различные типы. То есть, чтобы вызвать функцию парсинга, не зная заранее, результат какого типа будет распарсен. Как эту задачу лучше решать? Через наследование?
Полиморфизм либо std::any
источник

NP

Nikita Provotorov in pro.cxx
Ruben
Типа auto response = parseResponse(data, size);
а как потом работать с объектом response?
источник

R

Ruben in pro.cxx
Вообще правильно ли делать разные структуры на разные типы ответов сервера (запросы и ответы бывают нескольких типов, которые выражают определённую команду и содержат разные поля)?
источник

NP

Nikita Provotorov in pro.cxx
Ruben
Вообще правильно ли делать разные структуры на разные типы ответов сервера (запросы и ответы бывают нескольких типов, которые выражают определённую команду и содержат разные поля)?
странно что тип ответа зависит от объема данных а не от их типа или от типа запроса
источник

АК

Александр Караев... in pro.cxx
Ruben
Есть нужда сделать фунцию, которая в зависимости от значения (не типа!) аргумента будет возвращать различные типы. То есть, чтобы вызвать функцию парсинга, не зная заранее, результат какого типа будет распарсен. Как эту задачу лучше решать? Через наследование?
std::variant, если множество типов конечно и известно, иначе - unique_ptr<Interface>
источник

VK

Valentin Kornienko in pro.cxx
std::variant, у вас же число результатов парсинга фиксированное
источник

R

Ruben in pro.cxx
Nikita Provotorov
странно что тип ответа зависит от объема данных а не от их типа или от типа запроса
Не так, тип ответа кодируется в самом ответе
источник

VK

Valentin Kornienko in pro.cxx
std::optional<std::variant>даже, если результата может не быть
источник

R

Ruben in pro.cxx
То есть мы читаем из ответа его тип закодированный числом, и в зависимости от этого создаем структуру, у которой вызываем parse
источник

NP

Nikita Provotorov in pro.cxx
Ruben
Не так, тип ответа кодируется в самом ответе
я бы сделал полиморфную базу для всех типов ответов, с которой можно будет работать не зная в итоге о конкретном типе ответа
источник

IK

Ivan Koliesnik in pro.cxx
Ruben
Вообще правильно ли делать разные структуры на разные типы ответов сервера (запросы и ответы бывают нескольких типов, которые выражают определённую команду и содержат разные поля)?
советую для расширяемости шаблон делать...
template<>
Quaternion Ini::Property::Get() const
источник

AT

Alexander T in pro.cxx
Ruben
Есть нужда сделать фунцию, которая в зависимости от значения (не типа!) аргумента будет возвращать различные типы. То есть, чтобы вызвать функцию парсинга, не зная заранее, результат какого типа будет распарсен. Как эту задачу лучше решать? Через наследование?
Звучит как switch и коллбэки на каждый тип, иначе как-то неловко получается, дважды тип стирать и всё равно потом тем же switch или if обрабатывать.

Да, или unique_ptr<interface>, если только сохранить нужно.

Или visitor, если таки нужно сразу процессить, но не хочется switch и коллбэки.
источник

R

Ruben in pro.cxx
Насчёт visitor интересная идея
источник

AT

Anatoly Tomilov in pro.cxx
Valentin Kornienko
std::optional<std::variant>даже, если результата может не быть
чем std::monostate не мил?
источник

VK

Valentin Kornienko in pro.cxx
Anatoly Tomilov
чем std::monostate не мил?
Оу. Не знал про него. Спасибо!
источник

d

d7d1cd in pro.cxx
Подскажите, если у меня в моей стандартной не-до С++11 библиотеке нет initializer_list, то могу ли я взять где-то его реализацию и использовать?
источник

N

Nikitin Alexey in pro.cxx
d7d1cd
Подскажите, если у меня в моей стандартной не-до С++11 библиотеке нет initializer_list, то могу ли я взять где-то его реализацию и использовать?
Вопрос по реализации - посмотреть как он устроен или про лицензирование - откуда взять существующую реализацию в свой проект?
источник

AT

Anatoly Tomilov in pro.cxx
а это разве не магический класс, неподобие std::type_info?
источник