Index: doc/uC++toCFA/Makefile
===================================================================
--- doc/uC++toCFA/Makefile	(revision 946a6e4d6e22aa9ec049796a1ac9b96286d7e852)
+++ doc/uC++toCFA/Makefile	(revision d4264e8a120ee554ca06bdced07b5b59cee1a852)
@@ -8,5 +8,5 @@
 BibTeX = BIBINPUTS=../bibliography: && export BIBINPUTS && bibtex
 
-MAKEFLAGS = --no-print-directory --silent #
+MAKEFLAGS = --no-print-directory # --silent
 VPATH = ${Build} ${Figures}
 
Index: doc/uC++toCFA/uC++toCFA.tex
===================================================================
--- doc/uC++toCFA/uC++toCFA.tex	(revision 946a6e4d6e22aa9ec049796a1ac9b96286d7e852)
+++ doc/uC++toCFA/uC++toCFA.tex	(revision d4264e8a120ee554ca06bdced07b5b59cee1a852)
@@ -11,6 +11,6 @@
 %% Created On       : Wed Apr  6 14:53:29 2016
 %% Last Modified By : Peter A. Buhr
-%% Last Modified On : Sun Oct 15 23:09:58 2023
-%% Update Count     : 5926
+%% Last Modified On : Thu Jan 11 14:46:14 2024
+%% Update Count     : 5942
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 
@@ -428,5 +428,5 @@
 \begin{uC++}
 struct S {
-	int i = 0;
+	int i = 0;  // cheat, implicit default constructor
 	int setter( int j ) { int t = i; i = j; return t; }
 	int getter() { return i; }
@@ -434,5 +434,5 @@
 
 S s;
-@s.@setter( 3 );  // object-oriented call
+@s.@setter( 3 );  // object-oriented calls
 int k = @s.@getter();
 \end{uC++}
@@ -442,9 +442,9 @@
 	int i;
 };
-void ?{}( S & s ) { s.i = 0; }
+void ?{}( S & s ) { s.i = 0; } // explicit default constructor
 int setter( @S & s,@ int j ) @with(s)@ { int t = i; i = j; return t; }
 int getter( @S & s@ ) @with(s)@ { return i; }
 S s;
-setter( @s,@ 3 );  // normal routine call
+setter( @s,@ 3 );  // normal routine calls
 int k = getter( @s@ );
 \end{cfa}
@@ -458,32 +458,30 @@
 \begin{tabular}{l|l}
 \begin{uC++}
+
 struct S {
 	int i;
-	S( int i ) { S::i = i; cout << S::i << endl; }
-};
-@uNoCtor<S>@ s[10];
+	S( int i ) { S::i = i; cout << "ctor " << S::i << endl; }
+	~S() { S::i = i; cout << "dtor " << S::i << endl; }
+};
 int main() {
-	for ( int i = 0; i < 10; i += 1 ) {
-		s[i].ctor( i );
-	}
-	for ( int i = 0; i < 10; i += 1 ) {
-		cout << s[i]@->@i << endl;
-	}
-}
-\end{uC++}
-&
-\begin{cfa}
+	enum { N = 5 };
+	@uNoCtor<S>@ s[N];   // no constructor calls
+	for ( int i = 0; i < N; i += 1 ) @s[i].ctor( i )@;
+	for ( int i = 0; i < N; i += 1 ) cout << s[i]@->@i << endl;
+}
+\end{uC++}
+&
+\begin{cfa}
+#include @<raii.hfa>@          // uninit
 struct S {
 	int i;
 };
-void ?{}( S & s, int i ) { s.i = i; sout | s.i; }
-S s[10] @$\color{red}@$= {}@;
+void ?{}( S & s, int i ) { s.i = i; sout | "ctor" | s.i; }
+void ^?{}( S & s ) { sout | "dtor" | s.i; }
 int main() {
-	for ( i; 10 ) {
-		?{}( s[i], i );  // call constructor
-	}
-	for ( i; 10 ) {
-		sout | s[i]@.@i; // dot not arrow
-	}
+	enum { N = 5 };
+	@uninit(S)@ s[N];   // no constructor calls
+	for ( i; N ) @s[i]{ i }@;
+	for ( i; N ) sout | s[i]@.@i;
 }
 \end{cfa}
