Signature constraints on templated enums and aliases?
H. S. Teoh via Digitalmars-d
digitalmars-d at puremagic.com
Thu Jun 26 15:40:55 PDT 2014
Recently, very nice syntactic sugar was added for eponymous templates
that expand to enums or aliases:
// Original verbose form
template myEnum(T) {
enum myEnum = T.someStaticValue;
}
// New concise form:
enum myEnum(T) = T.someStaticValue;
// Original verbose form
template MyType(T) {
alias MyType = typeof(T.someField);
}
// New concise form:
alias MyType(T) = T.someField;
This is wonderful, since it lets us shorten common templated enums and
aliases the same way templated functions are. However, there's one
missing component: signature contraints.
// sig constraints work for templated functions:
auto myFunc(T)(T t) if (isInputRange!T) { ... }
// But not for enums or aliases:
//enum myEnum(T) = T.someValue if (is(typeof(T.someValue))); //NG
// Instead you're forced to write it in long-form:
template myEnum(T)
if (is(typeof(T.someValue)))
{
enum myEnum = T.someValue;
}
Is there any chance of extending the syntax of enums and aliases to also
allow sig constraints, the same way they are allowed in function
declarations?
T
--
"You know, maybe we don't *need* enemies." "Yeah, best friends are about all I can take." -- Calvin & Hobbes
More information about the Digitalmars-d
mailing list