T maybe(alias nullCheck, T)(T expr, T def)
{
if (nullCheck(expr))
{
return def;
}
else
{
return expr;
}
}
auto tokens = chomp(readln())
.toLower()
.split()
.maybe!(a => a.empty)([""])
Когда аргументы шаблона maybe
расположены с первым псевдоним, компилятор правильно может вывести типы аргументов. Однако, когда аргументы шаблона переключаются так, что T приходит первым, он не может их вывести и не будет компилироваться. Почему это?Вывод типа D зависит от порядка аргументов шаблона
tl; dr; Явным образом предоставленные аргументы (шаблон или другие) назначаются префиксу полного списка аргументов. – BCS