Re[14]: [proof-of-concept] compile time query language
От: Evgeny.Panasyuk Россия  
Дата: 11.07.16 22:11
Оценка:
Здравствуйте, 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.
Отредактировано 11.07.2016 22:12 Evgeny.Panasyuk . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.