Index: tests/array-collections/.expect/array-raii-c.txt
===================================================================
--- tests/array-collections/.expect/array-raii-c.txt	(revision 8da3cc4da5bed4bd38fdeaabdce0698b1f091953)
+++ tests/array-collections/.expect/array-raii-c.txt	(revision cdf7d439c924923dbb24ce7fd66539e754fa40d9)
@@ -70,5 +70,5 @@
 dtor 1
 dtor 0
-=== uninit
+=== uninit ( uNoCtor[] )
  [1]
 before ctors
Index: tests/array-collections/.expect/array-raii-cfa.txt
===================================================================
--- tests/array-collections/.expect/array-raii-cfa.txt	(revision 8da3cc4da5bed4bd38fdeaabdce0698b1f091953)
+++ tests/array-collections/.expect/array-raii-cfa.txt	(revision cdf7d439c924923dbb24ce7fd66539e754fa40d9)
@@ -70,5 +70,5 @@
 dtor 1
 dtor 0
-=== uninit
+=== uninit ( uNoCtor[] )
  [1]
 before ctors
@@ -108,2 +108,56 @@
 dtor 101
 dtor 100
+=== uninit alt ( uArray )
+ [1]
+before ctors
+ctor 0
+ctor 999
+ctor 888
+ctor 3
+ctor 4
+func 0
+func 999
+func 888
+func 3
+func 4
+dtor 4
+dtor 3
+dtor 888
+dtor 999
+dtor 0
+ [2]
+before ctors
+ctor 100
+ctor 101
+ctor 102
+ctor 110
+ctor 999
+ctor 888
+func 100 at (0, 0)
+func 101 at (0, 1)
+func 102 at (0, 2)
+func 110 at (1, 0)
+func 999 at (1, 1)
+func 888 at (1, 2)
+dtor 888
+dtor 999
+dtor 110
+dtor 102
+dtor 101
+dtor 100
+=== uC++ cheat sheet
+ctor 0
+ctor 1
+ctor 2
+ctor 3
+ctor 4
+0
+1
+2
+3
+4
+dtor 4
+dtor 3
+dtor 2
+dtor 1
+dtor 0
Index: tests/array-collections/array-raii-c.cfa
===================================================================
--- tests/array-collections/array-raii-c.cfa	(revision 8da3cc4da5bed4bd38fdeaabdce0698b1f091953)
+++ tests/array-collections/array-raii-c.cfa	(revision cdf7d439c924923dbb24ce7fd66539e754fa40d9)
@@ -20,2 +20,4 @@
 
 #include "array-raii.hfa"
+
+void test_extras() {}
Index: tests/array-collections/array-raii-cfa.cfa
===================================================================
--- tests/array-collections/array-raii-cfa.cfa	(revision 8da3cc4da5bed4bd38fdeaabdce0698b1f091953)
+++ tests/array-collections/array-raii-cfa.cfa	(revision cdf7d439c924923dbb24ce7fd66539e754fa40d9)
@@ -16,4 +16,6 @@
 // CFA array means like `array(float, 17) x;`
 
+
+#include <fstream.hfa>
 #include <collections/array.hfa>
 
@@ -22,2 +24,58 @@
 
 #include "array-raii.hfa"
+
+void test_uninit_alt() {
+    printf(" [1]\n");
+    {
+        array(thing, 5) a = { delay_init };
+        printf("before ctors\n");
+        for(i; 5) {
+            if (i == 1)
+                (a[i]){};  // no need for `emplace` bc no-arg ctor call means elem's real ctor
+            else if (i == 2)
+                (a[i]){888};
+            else
+                (a[i]){i};
+        }
+        for(i; 5) printf("func %d\n", a[i].mem);
+    }
+    printf(" [2]\n");
+    {
+        array(thing, 2, 3) a = { delay_init };
+        printf("before ctors\n");
+        for(i; 2) for(j; 3) {
+            if (i == 1 && j == 1)
+                (a[i][j]){};
+            else if (i == 1 && j == 2)
+                (a[i][j]){888};
+            else
+                (a[i][j]){100 + 10 * i + j};
+        }
+        for(i; 2) for(j; 3) {
+            printf("func %d at (%d, %d)\n", a[i][j].mem, i, j);
+        }
+    }
+}
+
+void test_uCxxCheatSheet() {
+    struct S {
+        int i;
+    };
+    void ?{}( S & s, int i ) { s.i = i; sout | "ctor" | s.i; }
+    void ^?{}( S & s ) { sout | "dtor" | s.i; }
+//  int main() {
+        enum { N = 5 };
+        array(S, N) s = { delay_init };   // no constructor calls
+        for ( i; N ) s[i]{ i };
+        for ( i; N ) sout | s[i].i;
+//  }
+}
+
+void test_extras() {
+
+    printf("=== uninit alt ( uArray )\n");
+    test_uninit_alt();
+
+    printf("=== uC++ cheat sheet\n");
+    test_uCxxCheatSheet();
+}
Index: tests/array-collections/array-raii.hfa
===================================================================
--- tests/array-collections/array-raii.hfa	(revision 8da3cc4da5bed4bd38fdeaabdce0698b1f091953)
+++ tests/array-collections/array-raii.hfa	(revision cdf7d439c924923dbb24ce7fd66539e754fa40d9)
@@ -118,17 +118,18 @@
 }
 
+struct thing { int mem; };
+void ?{}( thing & this, int i ) {
+    (this.mem){ i };
+    printf("ctor %d\n", this.mem);
+}
+void ?{}( thing & this ) {
+    (this){ 999 };
+}
+void ^?{}( thing & this ) {
+    printf("dtor %d\n", this.mem);
+}
+
 // Array of uninits sees explicit ctor calls (only), and implied dtor calls
 void test_uninit() {
-    struct thing { int mem; };
-    void ?{}( thing & this, int i ) {
-        (this.mem){ i };
-        printf("ctor %d\n", this.mem);
-    }
-    void ?{}( thing & this ) {
-        (this){ 999 };
-    }
-    void ^?{}( thing & this ) {
-        printf("dtor %d\n", this.mem);
-    }
     printf(" [1]\n");
     {
@@ -163,4 +164,6 @@
 }
 
+void test_extras();
+
 int main() {
     printf("=== builtins\n");
@@ -170,5 +173,7 @@
     test_custom();
 
-    printf("=== uninit\n");
+    printf("=== uninit ( uNoCtor[] )\n");
     test_uninit();
+
+    test_extras();
 }
