Комментарии 3
Даже не знаю что написать в комментарии:) Это реально очень круто, но я потерялся где-то не дойдя до середины, хотя понятно что это очередное нестандартное использование языка. А для рефлексии времени компиляции в большинстве случаев прекрасно подходят старые сишные макросы. А там обычно однотипная задача: описать некоторый список кортежей, который можно использовать для разных целей: объявить из него поля структуры, сделать массив значений, обработать в цикле, загрузить в GUI, сделать сериализацию.
Даже не знаю что написать в комментарии:)
Что пока в стандарте C++ нет чего-то полезного всегда можно попробовать сделать это через Ж дендро-фекальным методом, чтобы благодарные потомки, кому не повезет сопровождать подобный код в будущем, вспоминали автора этих наворотов незлым тихим словом.
Ну вот иногда сишные макросы всё же не подходят. Я писала свой фреймворк с DI и там возникла потребность выявлять зависимости компонентов(Использовался Service Locator с данными нужными в шаблоне).
Если выносить информацию из тела, то это нужно писать бойлерплейт, +меньше диагностируется на КТ, +легко можно ошибиться, а проверка только на рантайме, в сишные макросы это адекватно и не запихнуть.
Пришлось вспоминать про лупхолы и придумывать им такое применение.
Type Loopholes: решая нерешаемое. Рефлексия времени компиляции