Comparing template alias parameters
Simen kjaeraas
simen.kjaras at gmail.com
Fri Dec 10 05:20:50 PST 2010
Given an index structure like this:
struct Index( alias arr ) if ( is( typeof( arr ) t : U[], U ) ) {
private size_t idx;
@property pure nothrow size_t get( ) const {
return idx;
}
alias get this;
invariant( ) {
assert( idx < arr.length );
}
this( size_t value ) {
idx = value;
}
Index opAssign( size_t value ) {
idx = value;
return this;
}
}
would it be possible to do something akin to this:
void foo( T )( T[] arr, Index!arr a ) {
}
void bar( ) {
int[] a = [1,2,3];
Index!a idx;
foo( a, idx ); // ensures idx is a valid index for a
}
Somewhat trivial an application, as this could easily be tested
with an in clause, but imagine that ( arr is Index!(arr).arr )
has to be true.
--
Simen
More information about the Digitalmars-d-learn
mailing list