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 が最初に来るようにテンプレート引数が切り替えられると、それらを推論できず、コンパイルされません。どうしてこれなの?