Здравствуйте, _NN_, Вы писали:
_>>В D в этом случае будет ошибка компиляции со вполне вменяемым сообщением. Единственный минус тут в том, что указывать ошибка будет на строчку с mixin, а не на функцию makeStruct.
_NN>Потом появятся библиотеки для объектного создания этого дела и будет:
_NN>_NN>string makeStruct(string name)
_NN>{
_NN> return createStruct(name).addField(makeField("int", "x")).build();
_NN>}
_NN>
_NN>Я даже уверен, что кто-то такое сделал.
_NN>Только типизация пропадает сразу после выхода из этой функции да и писать такой код вместо цитирования неочень приятно.
Возможно. Но для людей имеющих в данный момент метапрограммирование только на шаблонах C++ и такое может показаться замечательным. )
_>>Это похоже ближе к макросам Rust или Nim. И оно конечно приятнее, но требует по сути введения нового языка в компилятор C++. Я в принципе не против, но сомневаюсь что на такое пойдут. А вот добавить одну скромную и несложную функцию типа mixin по идее могли бы...
_NN>Всё остальное это полумеры.
_NN>Можно конечно решить где предел, как шаблоны C++, шаблоны D, а можно сразу сделать как надо и получить все плюшки.
Ну я уже писал раньше, что как раз являюсь сторонниками "максимального" развития метапрограммирования в C++. Однако я при этом ещё и реалист. Так что предпочту получить хоть что-то (например аналог mixin из D), чем не получить ничего, предаваясь мечтаниям о полноценных синтаксических макросах.
_NN>Кстати в Rust насколько я понял там нет отладки, максимум это: cargo-expand.
_NN>Я говорю про такие, которые можно отлаживать, как в Nemerle, например.
На мой взгляд для отладки подобных вещей гораздо полезнее наличие отладочной печати. Кстати, для решения типа mixin в этой роли хватило бы как раз static_print из данной темки. А вот для полноценных макросов нужно уже что-то типа print_ast, что впрочем тоже не особая проблема.
Здравствуйте, alex_public, Вы писали:
_>Ну я уже писал раньше, что как раз являюсь сторонниками "максимального" развития метапрограммирования в C++. Однако я при этом ещё и реалист. Так что предпочту получить хоть что-то (например аналог mixin из D), чем не получить ничего, предаваясь мечтаниям о полноценных синтаксических макросах.
Это пройденный этап.
"Александреску" появится гораздо раньше чем кажется.
Поэтому лучше сразу по максимуму.
Тогда и код проще будет и полезности больше.
_>На мой взгляд для отладки подобных вещей гораздо полезнее наличие отладочной печати. Кстати, для решения типа mixin в этой роли хватило бы как раз static_print из данной темки. А вот для полноценных макросов нужно уже что-то типа print_ast, что впрочем тоже не особая проблема.
У меня есть опыт в отлаживании макросов и могу сказать, что это гораздо лучше чем полумеры вида print_ast
Здравствуйте, Alexander G, Вы писали:
AG>Image: tricky-twisted.jpg
Билл Гейтс показывает на пальцах
рогатую сферу Александера