Здравствуйте, niXman, Вы писали:
EP>>Можно создать строковый DSL, который на основе текстового кода создаёт конкретные структуры у которых имена полей сгенерированны из этих строк.
X>почему-ьто мне кажется это невозможным... можно пример?
Для этого нужна фича
std::reification которую я описал выше.
Ты же можешь обработать строку
" struct Test { int foo, double bar }; " во время компиляции и вытащить от туда имена
"foo" и
"bar"? (
примерАвтор: Evgeny.Panasyuk
Дата: 12.10.14
как это сделать)
Для этого даже есть готовый генератор парсеров — Boost.Metaparse.
Вытащив имена, ты можешь их скормить в
std::reification<'f', 'o', 'o'>, где компилятор автоматом сгенерирует специализацию (в этом и есть мой proposal):
template<>
struct reification<'f', 'o', 'o'>
{
template <typename T>
struct field
{
T foo;
};
};
А далее, уже из этих специализаций можно слепить итоговую структуру через наследование, как в sqlpp11.