На ком? Найдёшь падаванов? Моим вон 5 минут хватило осознать необходимые базовые принципы STL, чтобы вместо C использовать C++ в своих тестовых примерах. Не чистый пример, да, но показательный.
Решение на D, оно несколько неполное, но поверь, раздербанить можно любой тип на мельчайшие составляюшие:
...
Зачем? Чтобы сериализировать? А ты уверен, что рефлексия даст тебе правильное решение? Вот у тебя класс Connection с удалённым серверном, ну-ка расскажи, как ты рефлексией его сохранишь, а потом восстановишь, пусть даже и на этой же машине. И что тебе вообще даст рефлексия.
Не правильно спросил. Вообще зачем тебе рефлексия? Любые примеры практического применения мне лично попадались исключительно синтетические.
Народ в плюсах жесточайшими путями умудряется кое-как итерировать поля PODов, и сильно гордится этим
Стереть из интернета и забыть, что вообще подобное где-то когда-то было. Уже вижу, как народ вовсю кинулся визуализировать всякие там Connection-ы, std::filesystem::path-ы итп. Свят-свят-свят. applegame, не заставляй мне читать тебе лекцию об атрибутах объектов и почему они не коллинеарны полям класса. Целью обучения программированию является вообще-то определить правильные практики дизайна кода, а не натаскать на методах их обхода. Если уж натаскивать на методах обхода, то это однозначно не методы проектирования и это однозначно языкозависимые методы.
P.S. Вообще, я уже не уверен, что вы понимаете предмет темы: обучение студентов программированию.
Та кто ж будет спорить. Я могу кучу привести примеров клёвых примеров, только практического применения им не будет. Замечу, тут речь не о некой технологии программирования, а о конкретной задаче на конкретном языке. Например, наваять некий using std::integer_sequence<>, содержащий первые, скажем 30 простых чисел. Или std::initializer_list<>, содержащий std::tuple<> со всеми сочетаниями элементов из std::integer_sequence<> по 5 из предыдущего элемента. Зачем, кроме как выпендриться?
Вот тут не могу не согласиться. Я тоже не понимаю этого засилья {} везде где ни попадя. Всю историю программеров учили, что инициализация атрибутами выполняется посредством (), а инициализация {} предназначена для агрегатных типов. И эта разница важна, потому как определяют совершенно разные принципы инициализации. Зачем ломать эту концепцию?