Я хотел бы преобразовать квалифицированное имя, хранящееся в одном string
, до AliasSeq
. Вот моя попытка:Как обрабатывать пустой AliasSeq?
template QName(string qname_str) {
static if (qname_str.empty) {
import std.meta : AliasSeq;
alias QName = AliasSeq!();
} else {
import std.meta : aliasSeqOf;
alias QName = aliasSeqOf!(qname_str.split("."));
}
}
unittest {
// OK:
static assert(QName!"com.example"[0..$-1] == QName!"com");
// Error: incompatible types for ((tuple()) == (())): cannot use '==' with types
static assert(QName!"com"[0..$-1] == QName!"");
}
Уведомление об ошибке для сравнения с пустым составным именем. Я пробовал различные попытки, поэтому левая сторона имеет тот же тип, что и правая сторона, и я также попытался сравнить их с is
, но во всех случаях я получил ошибку. Любые предложения о том, как обращаться с пустым AliasSeq
-s?