Re[8]: Box2D
От: so5team https://stiffstream.com
Дата: 05.07.18 10:23
Оценка:
Здравствуйте, lpd, Вы писали:

S>>Интересно было бы посмотреть на type-safe union без шаблонов на полиморфизме.


lpd>В 98% случаев абсолютно все равно, сколько структура занимает памяти — сейчас не 1Mb памяти на все, и многие вообще пишут на Java.


В том-то и дело, что там, где не важно потребление ресурсов, спокойно пишут на Java/Scala/Kotlin/Ceylon, C#/F#/VisualBasic, Python, Ruby и даже, как говорят, на Haskell-е. Место для C++ осталось там, где важно иметь контроль за происходящим.

lpd>В твоем примере можно просто reply_success_t и reply_failure_t унаследовать от reply_t, и этого достаточно для реализации любой логики.


Во-первых, *_resul_t специально отделены от reply_t. Т.к. там, где получается *_result_t, никто ничего не знает о reply_t.
Во-вторых, логика будет усложнена за счет того, что придется ловить не один reply, а два разных (а потом, возможно и больше).

lpd>Либо result_success_t и result_failure_t унаследовать от result_t.


И передавать их как? Через unique_ptr?

lpd>В крайнем случае использовать union для полей, но только если это действительно необходимо.


C union-ом все становится интереснее как только туда помещаются данные с нетривиальными деструкторами. И тогда сразу же возникает вопрос: чем это лучше std::variant?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.