Index: libcfa/src/rational.cfa
===================================================================
--- libcfa/src/rational.cfa	(revision 94d254437ab615d55e810d17d48db127c4d6835a)
+++ libcfa/src/rational.cfa	(revision 5454d77a6b5c2ea57768bd648080a60b2025a753)
@@ -10,6 +10,6 @@
 // Created On       : Wed Apr  6 17:54:28 2016
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Mon Jun  5 22:49:06 2023
-// Update Count     : 196
+// Last Modified On : Tue Jul 18 11:07:10 2023
+// Update Count     : 197
 //
 
@@ -206,8 +206,5 @@
 			return os | r.numerator | '/' | r.denominator;
 		} // ?|?
-
-		void ?|?( ostype & os, rational(T) r ) {
-			(ostype &)(os | r); ends( os );
-		} // ?|?
+		OSTYPE_VOID_IMPL( rational(T) )
 	} // distribution
 } // distribution
Index: libcfa/src/rational.hfa
===================================================================
--- libcfa/src/rational.hfa	(revision 94d254437ab615d55e810d17d48db127c4d6835a)
+++ libcfa/src/rational.hfa	(revision 5454d77a6b5c2ea57768bd648080a60b2025a753)
@@ -12,6 +12,6 @@
 // Created On       : Wed Apr  6 17:56:25 2016
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Mon Jun  5 22:49:05 2023
-// Update Count     : 119
+// Last Modified On : Tue Jul 18 11:08:24 2023
+// Update Count     : 121
 //
 
@@ -78,5 +78,5 @@
 	forall( ostype & | ostream( ostype ) | { ostype & ?|?( ostype &, T ); } ) {
 		ostype & ?|?( ostype &, rational(T) );
-		void ?|?( ostype &, rational(T) );
+		OSTYPE_VOID( rational(T) );
 	} // distribution
 } // distribution
Index: libcfa/src/time.cfa
===================================================================
--- libcfa/src/time.cfa	(revision 94d254437ab615d55e810d17d48db127c4d6835a)
+++ libcfa/src/time.cfa	(revision 5454d77a6b5c2ea57768bd648080a60b2025a753)
@@ -10,6 +10,6 @@
 // Created On       : Tue Mar 27 13:33:14 2018
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Tue Feb  4 08:24:18 2020
-// Update Count     : 70
+// Last Modified On : Tue Jul 18 10:55:01 2023
+// Update Count     : 71
 //
 
@@ -43,8 +43,5 @@
 		return os;
 	} // ?|?
-
-	void ?|?( ostype & os, Duration dur ) with( dur ) {
-		(ostype &)(os | dur); ends( os );
-	} // ?|?
+	OSTYPE_VOID_IMPL( Duration )
 } // distribution
 
@@ -155,8 +152,5 @@
 		return os;
 	} // ?|?
-
-	void ?|?( ostype & os, Time time ) with( time ) {
-		(ostype &)(os | time); ends( os );
-	} // ?|?
+	OSTYPE_VOID_IMPL( Time )
 } // distribution
 
Index: libcfa/src/vec/vec2.hfa
===================================================================
--- libcfa/src/vec/vec2.hfa	(revision 94d254437ab615d55e810d17d48db127c4d6835a)
+++ libcfa/src/vec/vec2.hfa	(revision 5454d77a6b5c2ea57768bd648080a60b2025a753)
@@ -283,6 +283,4 @@
         return os | '<' | x | ',' | y | '>';
     }
-    void ?|?(ostype & os, vec2(T) v ) with (v) {
-        (ostype &)(os | v); ends(os);
-    }
+	OSTYPE_VOID_IMPL( vec2(T) )
 }
Index: libcfa/src/vec/vec3.hfa
===================================================================
--- libcfa/src/vec/vec3.hfa	(revision 94d254437ab615d55e810d17d48db127c4d6835a)
+++ libcfa/src/vec/vec3.hfa	(revision 5454d77a6b5c2ea57768bd648080a60b2025a753)
@@ -292,6 +292,4 @@
         return os | '<' | x | ',' | y | ',' | z | '>';
     }
-    void ?|?(ostype & os, vec3(T) v ) with (v) {
-        (ostype &)(os | v); ends(os);
-    }
+	OSTYPE_VOID_IMPL( vec3(T) )
 }
Index: libcfa/src/vec/vec4.hfa
===================================================================
--- libcfa/src/vec/vec4.hfa	(revision 94d254437ab615d55e810d17d48db127c4d6835a)
+++ libcfa/src/vec/vec4.hfa	(revision 5454d77a6b5c2ea57768bd648080a60b2025a753)
@@ -287,7 +287,5 @@
         return os | '<' | x | ',' | y | ',' | z | ',' | w | '>';
     }
-    void ?|?(ostype & os, vec4(T) v ) with (v) {
-        (ostype &)(os | v); ends(os);
-    }
+	OSTYPE_VOID_IMPL( vec4(T) )
 }
 
