Index: libcfa/src/containers/array.hfa
===================================================================
--- libcfa/src/containers/array.hfa	(revision c2794b23f5f9716decbad4592c83a72c2d3d75e0)
+++ libcfa/src/containers/array.hfa	(revision 63f42a8be743d7f6e1b14768415f496e2fc88e0b)
@@ -16,5 +16,5 @@
 //
 
-forall( [N], [S], Timmed &, Tbase & ) {
+forall( [N], S & | sized(S), Timmed &, Tbase & ) {
     struct arpk {
         S strides[z(N)];
@@ -142,14 +142,14 @@
 
 // Base
-forall( [Nq], [Sq], Tbase & )
+forall( [Nq], Sq & | sized(Sq), Tbase & )
 static inline tag(arpk(Nq, Sq, Tbase, Tbase)) enq_( tag(Tbase), tag(Nq), tag(Sq), tag(Tbase) ) {}
 
 // Rec
-forall( [Nq], [Sq], [N], [S], recq &, recr &, Tbase & | { tag(recr) enq_( tag(Tbase), tag(Nq), tag(Sq), tag(recq) ); } )
+forall( [Nq], Sq & | sized(Sq), [N], S & | sized(S), recq &, recr &, Tbase & | { tag(recr) enq_( tag(Tbase), tag(Nq), tag(Sq), tag(recq) ); } )
 static inline tag(arpk(N, S, recr, Tbase)) enq_( tag(Tbase), tag(Nq), tag(Sq), tag(arpk(N, S, recq, Tbase)) ) {}
 
 // Wrapper
 struct all_t {} all;
-forall( [N], [S], Te &, result &, Tbase & | { tag(result) enq_( tag(Tbase), tag(N), tag(S), tag(Te) ); } )
+forall( [N], S & | sized(S), Te &, result &, Tbase & | { tag(result) enq_( tag(Tbase), tag(N), tag(S), tag(Te) ); } )
 static inline result & ?[?]( arpk(N, S, Te, Tbase) & this, all_t ) {
     return (result&) this;
