Комментарии 9
Checked!(Checked!(int, ProperCompare), WithNaN)
Лучше позволить Checked принимать произвольное число аргументов, тогда можно писать просто:
Checked!(int, ProperCompare, WithNaN)
hasMember фактически неюзабелен — ложнопозитивно врёт когда его применяют к объектам, использующим opDispatch. Лучше использовать __traits compiles
Как то мне показалось, что в более молодых языках типа rust, swift, kotlin это все элегантнее выглядит.
Спасибо за статью. Очень интересно написано. Не знаком с D, поэтому прошу прощения за глупый вопрос. Верно ли понимаю, что возможность вызова операторов времени компиляции, позволяет выполнять расширение методов языка без дополнительных накладных расходов? И это, вероятно, важно в данной статье.
Вопрос к первому условию, к самому первому if, в примере кода:
Условия не static if, а простое if. Сказывается ли это по последующей скорости выполнения программы?
Вопрос к первому условию, к самому первому if, в примере кода:
ref Checked opUnary(string op)() return
if (op == "++" || op == "--")
{
static if (hasMember!(Hook, "hookOpUnary"))
hook.hookOpUnary!op(payload);
else
static if (hasMember!(Hook, "onOverflow"))
{
static if (op == "++")
{
if (payload == max.payload)
payload = hook.onOverflow!"++"(payload);
else
++payload;
} else
{
if (payload == min.payload)
payload = hook.onOverflow!"--"(payload);
else
--payload;
}
} else
mixin(op ~ "payload;");
return this;
}
Условия не static if, а простое if. Сказывается ли это по последующей скорости выполнения программы?
НЛО прилетело и опубликовало эту надпись здесь
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Design by Introspection