рефлексия на рефлексию
Dec. 9th, 2017 01:57 pmКомпайл-тайм рефлексия курильщика:
https://habrahabr.ru/post/344206/ ( С++14 )
Компайл-тайм рефлексия здорового человека:
Выводит:
i = 1
s = 2
d = 3
u = 4
Короче, вот мой патентованный универсальный алгоритм по применению С++14 и С++17:
Если у вас есть С++ и вам нужна компайл-тайм интроспекция, хитрые преобразования типов, тайп-левел арифметика и выполнение кода, прочие компайл-тайм навороты, то выкидиваете нафиг С++ и берете D. Код становится простым и коротким, волосы шелковистыми.
Если у вас есть С++ и вам не нужны эти премудрости с типами и метапрограммированием, а нужен тупой быстрый код, молотящий данные, то выкидываете нафиг С++ и берете Раст.
https://habrahabr.ru/post/344206/ ( С++14 )
Компайл-тайм рефлексия здорового человека:
import std.stdio;
struct complicated_struct {
int i;
short s;
double d;
uint u;
}
void main() {
auto s = complicated_struct(1,2,3,4);
foreach(m; __traits(allMembers, complicated_struct))
writeln(m, " = ", __traits(getMember, s, m));
}
Выводит:
i = 1
s = 2
d = 3
u = 4
Короче, вот мой патентованный универсальный алгоритм по применению С++14 и С++17:
Если у вас есть С++ и вам нужна компайл-тайм интроспекция, хитрые преобразования типов, тайп-левел арифметика и выполнение кода, прочие компайл-тайм навороты, то выкидиваете нафиг С++ и берете D. Код становится простым и коротким, волосы шелковистыми.
Если у вас есть С++ и вам не нужны эти премудрости с типами и метапрограммированием, а нужен тупой быстрый код, молотящий данные, то выкидываете нафиг С++ и берете Раст.
no subject
Date: 2017-12-09 08:17 am (UTC)no subject
Date: 2017-12-09 08:32 am (UTC)no subject
Date: 2017-12-09 05:12 pm (UTC)