Index: src/prelude/Makefile.am
===================================================================
--- src/prelude/Makefile.am	(revision a1cfa0ce6a2f9c017b6a8df1d36fb3052c4c8b8c)
+++ src/prelude/Makefile.am	(revision 6382128c8e7c065248691cdee4f1a20c35f38525)
@@ -42,4 +42,9 @@
 	${AM_V_GEN}@BACKEND_CC@ @CFA_FLAGS@ -E prototypes.c | awk -f prototypes.awk > $@
 
+prelude.cf : prelude-gen.cc
+	${AM_V_GEN}${CXX} ${AM_CXXFLAGS} ${CXXFLAGS} ${<} -o prelude-gen
+	@./prelude-gen > $@
+	@rm ./prelude-gen
+
 builtins.def :
 
Index: src/prelude/Makefile.in
===================================================================
--- src/prelude/Makefile.in	(revision a1cfa0ce6a2f9c017b6a8df1d36fb3052c4c8b8c)
+++ src/prelude/Makefile.in	(revision 6382128c8e7c065248691cdee4f1a20c35f38525)
@@ -511,4 +511,9 @@
 	${AM_V_GEN}@BACKEND_CC@ @CFA_FLAGS@ -E prototypes.c | awk -f prototypes.awk > $@
 
+prelude.cf : prelude-gen.cc
+	${AM_V_GEN}${CXX} ${AM_CXXFLAGS} ${CXXFLAGS} ${<} -o prelude-gen
+	@./prelude-gen > $@
+	@rm ./prelude-gen
+
 builtins.def :
 
Index: src/prelude/prelude-gen.cc
===================================================================
--- src/prelude/prelude-gen.cc	(revision 6382128c8e7c065248691cdee4f1a20c35f38525)
+++ src/prelude/prelude-gen.cc	(revision 6382128c8e7c065248691cdee4f1a20c35f38525)
@@ -0,0 +1,406 @@
+#include <algorithm>
+#include <array>
+#include <iostream>
+#include <string>
+#include <vector>
+using namespace std;
+
+static struct{
+	const string name;
+	bool isFloat;
+	bool hasComparison;
+} basicTypes[] = {
+	// { "char"                  , false, true , },
+	// { "signed char"           , false, true , },
+	// { "unsigned char"         , false, true , },
+	{ "signed short"          , false, true , },
+	{ "unsigned short"        , false, true , },
+	{ "signed int"            , false, true , },
+	{ "unsigned int"          , false, true , },
+	{ "signed long int"       , false, true , },
+	{ "unsigned long int"     , false, true , },
+	{ "signed long long int"  , false, true , },
+	{ "unsigned long long int", false, true , },
+	{ "float"                 , true , true , },
+	{ "double"                , true , true , },
+	{ "long double"           , true , true , },
+	{ "float _Complex"        , true , false, },
+	{ "double _Complex"       , true , false, },
+	{ "long double _Complex"  , true , false, },
+#if defined(__SIZEOF_INT128__)
+	{ "__int128"              , false, true , },
+	{ "unsigned __int128"     , false, true , },
+#endif
+#if defined(__i386__) || defined(__ia64__) || defined(__x86_64__)
+	{ "__float80"             , true , true , },
+	{ "_Float128"             , true , true , },
+#endif
+};
+
+struct {
+	const string name;
+	bool assignment = false;
+	bool floatCompat = true;
+	bool isComparison = false;
+	bool isEqual = false;
+} arithmeticOperators[] = {
+	{ "?++"  , true , true, false, false },
+	{ "?--"  , true , true, false, false },
+	{ "++?"  , true , true, false, false },
+	{ "--?"  , true , true, false, false },
+	{ "+?"   , false, true , false, false },
+	{ "-?"   , false, true , false, false },
+	{ "~?"   , false, false, false, false },
+	{ "!?"   , false, true , false, true  },
+	{ "?*?"  , false, true , false, false },
+	{ "?/?"  , false, true , false, false },
+	{ "?%?"  , false, false, false, false },
+	{ "?+?"  , false, true , false, false },
+	{ "?-?"  , false, true , false, false },
+	{ "?<<?" , false, false, false, false },
+	{ "?>>?" , false, false, false, false },
+	{ "?<?"  , false, true , true , false },
+	{ "?<=?" , false, true , true , true  },
+	{ "?>?"  , false, true , true , false },
+	{ "?>=?" , false, true , true , true  },
+	{ "?==?" , false, true , false, true  },
+	{ "?!=?" , false, true , false, true  },
+	{ "?&?"  , false, false, false, false },
+	{ "?^?"  , false, false, false, false },
+	{ "?|?"  , false, false, false, false },
+	{ "?=?"  , true , true , false, false },
+	{ "?+=?" , true , true , false, false },
+	{ "?-=?" , true , true , false, false },
+	{ "?*=?" , true , true , false, false },
+	{ "?/=?" , true , true , false, false },
+	{ "?%=?" , true , false, false, false },
+	{ "?<<=?", true , false, false, false },
+	{ "?>>=?", true , false, false, false },
+	{ "?&=?" , true , false, false, false },
+	{ "?|=?" , true , false, false, false },
+	{ "?^=?" , true , false, false, false },
+};
+
+enum ArgType { Normal, PtrDiff, CommPtrDiff };
+
+struct {
+	const string name;
+	bool assignment = false;
+	string diffReturn;
+	ArgType diffArg2 = Normal;
+	string sized;
+} pointerOperators[] = {
+	{ "?++", true, "", Normal, " | sized(DT)" },
+	{ "?--", true, "", Normal, " | sized(DT)" },
+	{ "++?", true, "", Normal, " | sized(DT)" },
+	{ "--?", true, "", Normal, " | sized(DT)" },
+	{ "!?" , false, "int", Normal, "" },
+	{ "?<?", false, "signed int", Normal, "" },
+	{ "?<=?", false, "signed int", Normal, "" },
+	{ "?>?", false, "signed int", Normal, "" },
+	{ "?>=?", false, "signed int", Normal, "" },
+	{ "?==?", false, "signed int", Normal, "" },
+	{ "?!=?", false, "signed int", Normal, "" },
+	{ "?=?", true, "", Normal, "" }, // void * LHS, zero_t RHS ???
+	{ "*?", false, "&", Normal, " | sized(DT)" }, // & ???
+
+	{ "?-?", false, "ptrdiff_t", Normal, " | sized(DT)" },
+	{ "?-?", false, "", PtrDiff, " | sized(DT)" },
+	{ "?-=?", true, "", PtrDiff, " | sized(DT)" },
+
+	{ "?+?", false, "", CommPtrDiff, " | sized(DT)" },
+	{ "?[?]", false, "&", CommPtrDiff, " | sized(DT)" }, // & ???
+	{ "?+=?" , true, "", PtrDiff, " | sized(DT)" },
+};
+
+template<size_t N>
+string mask2string(unsigned int mask, array<string, N> names) {
+	string result = "";
+	int i = 0;
+	for(auto name : names) {
+		if(mask & (1 << i)) {
+			result += name;
+		}
+		i++;
+	}
+	return result;
+}
+
+template <typename... T>
+constexpr auto make_array(T&&... values) ->
+    std::array<
+        typename std::decay<typename std::common_type<T...>::type>::type,
+        sizeof...(T)>
+{
+    return std::array<
+        typename std::decay<
+            typename std::common_type<T...>::type>::type,
+        sizeof...(T)>{{std::forward<T>(values)...}};
+}
+
+int main() {
+	cout << "# 2 \"prelude.cf\"  // needed for error messages from this file" << endl;
+	cout << "trait sized(dtype T) {};" << endl;
+
+	cout << "//////////////////////////" << endl;
+	cout << "// Arithmetic Operators //" << endl;
+	cout << "//////////////////////////" << endl;
+	cout << endl;
+
+	cout << "void	?{}( zero_t & );" << endl;
+	cout << "void	?{}( one_t & );" << endl;
+	cout << "void	?{}( zero_t &, zero_t );" << endl;
+	cout << "void	?{}( one_t &, one_t );" << endl;
+	cout << "void	^?{}( zero_t & );" << endl;
+	cout << "void	^?{}( one_t & );" << endl;
+	cout << "zero_t			?=?( zero_t &, zero_t );" << endl;
+	cout << "one_t			?=?( one_t &, one_t );" << endl;
+	cout << "signed int ?==?( zero_t, zero_t ),							?!=?( zero_t, zero_t );" << endl;
+	cout << "signed int ?==?( one_t, one_t ),							?!=?( one_t, one_t );" << endl;
+
+	cout << "signed int ?==?( _Bool, _Bool ),							?!=?( _Bool, _Bool );" << endl;
+	cout << "void	?{}( _Bool & );" << endl;
+	cout << "void	?{}( _Bool &, _Bool );" << endl;
+	cout << "void	^?{}( _Bool & );" << endl;
+	cout << "_Bool			?=?( _Bool &, _Bool ),					?=?( volatile _Bool &, _Bool );" << endl;
+	cout << "signed int	!?( _Bool );" << endl;
+
+	cout << "void	^?{}( char & );" << endl;
+	cout << "void	^?{}( char unsigned & );" << endl;
+	cout << "void	^?{}( char signed & );" << endl;
+	cout << "void	?{}( char &, char );" << endl;
+	cout << "void	?{}( unsigned char &, unsigned char );" << endl;
+	cout << "void	?{}( char signed &, char signed );" << endl;
+	cout << "void	?{}( char & );" << endl;
+	cout << "void	?{}( unsigned char & );" << endl;
+	cout << "void	?{}( char signed & );" << endl;
+	cout << "char			?=?( char &, char ),					?=?( volatile char &, char );" << endl;
+	cout << "char signed		?=?( char signed &, char signed ),			?=?( volatile char signed &, char signed );" << endl;
+	cout << "char unsigned		?=?( char unsigned &, char unsigned ),			?=?( volatile char unsigned &, char unsigned );" << endl;
+
+
+	for (auto op : arithmeticOperators) {
+		for (auto type : basicTypes ) {
+			auto operands = count(op.name.begin(), op.name.end(), '?');
+			if (! op.floatCompat && type.isFloat) continue;
+			if (op.isComparison && ! type.hasComparison) continue;
+			if (op.assignment) {
+				const char * qualifiers[] = { "", "volatile " };
+				for (auto q : qualifiers){
+					cout << type.name << " " << op.name << "(";
+					cout << q << type.name << " &";
+					for (int i = 1; i < operands; ++i) {
+						cout << ", " << type.name;
+					}
+					cout << ");" << endl;
+				}
+			} else {
+				if (op.isComparison || op.isEqual) cout << "signed int";
+				else cout << type.name;
+				cout << " " << op.name << "(";
+				for (int i = 0; i < operands; ++i) {
+					cout << type.name;
+					if ((i+1) != operands) cout << ", ";
+				}
+				cout << ");" << endl;
+			}
+		}
+		cout << endl;
+	}
+	cout << endl;
+
+	cout << "/////////////////////////////" << endl;
+	cout << "// Arithmetic Constructors //" << endl;
+	cout << "/////////////////////////////" << endl;
+	for (auto type : basicTypes) {
+		cout << "void  ?{}(" << type.name << " &);" << endl;
+		cout << "void  ?{}(" << type.name << " &, " << type.name << ");" << endl;
+		cout << "void ^?{}(" << type.name << " &);" << endl;
+		cout << endl;
+	}
+	cout << endl;
+
+	cout << "//////////////////////////" << endl;
+	cout << "// Pointer Constructors //" << endl;
+	cout << "//////////////////////////" << endl;
+	cout << "forall(ftype FT) void  ?{}( FT *&, FT * );" << endl;
+	cout << "forall(ftype FT) void  ?{}( FT * volatile &, FT * );" << endl;
+
+	// generate qualifiers for first and second parameters of copy constructors
+	vector<pair<const string, const string>> qualifiersPair;
+	const unsigned int NQ = 2;
+	for(unsigned int lhs = 0; lhs < (1<<NQ); lhs++) {
+		for(unsigned int rhs = 0; rhs < (1<<NQ); rhs++) {
+			if((lhs & rhs) == rhs) {
+				qualifiersPair.push_back({
+					mask2string(lhs, make_array("const "s, "volatile "s)),
+					mask2string(rhs, make_array("const "s, "volatile "s))
+				});
+			}
+		}
+	}
+
+	for (auto type : { "DT", "void" }) {
+		for (auto q : qualifiersPair) {
+			cout << "forall(dtype DT) void  ?{}(" << q.first << type << " *&, " << q.second << "DT *);" << endl;
+		}
+	}
+
+
+	// generate qualifiers for parameter of default constructor and destructor
+	vector<string> qualifiersSingle;
+	for (unsigned int lhs = 0; lhs < (1<<NQ); lhs++) {
+		qualifiersSingle.push_back(mask2string(lhs, make_array("const "s, "volatile "s)));
+	}
+
+	for (auto type : { "DT", "void" }) {
+		for (auto q : qualifiersSingle) {
+			cout << "forall(dtype DT) void  ?{}(" << q << type << " *&);" << endl;
+			cout << "forall(dtype DT) void ^?{}(" << q << type << " *&);" << endl;
+		}
+	}
+	cout << endl;
+
+	cout << "forall(dtype DT) void ?{}(		    DT *	  &, zero_t );" << endl;
+	cout << "forall(dtype DT) void ?{}(		    DT * volatile &, zero_t );" << endl;
+	cout << "forall(dtype DT) void ?{}( const	    DT *	  &, zero_t );" << endl;
+	cout << "forall(dtype DT) void ?{}( volatile	    DT *	  &, zero_t );" << endl;
+	cout << "forall(dtype DT) void ?{}( volatile	    DT * volatile &, zero_t );" << endl;
+	cout << "forall(dtype DT) void ?{}( const volatile DT *	  &, zero_t );" << endl;
+	cout << "forall(ftype FT) void	?{}( FT *	   &, zero_t );	" << endl;
+	cout << "forall( ftype FT ) void	?{}( FT *	   & );" << endl;
+	cout << "forall( ftype FT ) void	^?{}( FT *	   & );" << endl;
+	cout << endl;
+
+	cout << "///////////////////////" << endl;
+	cout << "// Pointer Operators //" << endl;
+	cout << "///////////////////////" << endl;
+
+	cout << "forall( ftype FT ) FT *			?=?( FT *&, FT * );" << endl;
+	cout << "forall( ftype FT ) FT *			?=?( FT * volatile &, FT * );" << endl;
+	cout << "forall( ftype FT ) int !?( FT * );" << endl;
+	cout << "forall( ftype FT ) signed int ?==?( FT *, FT * );" << endl;
+	cout << "forall( ftype FT ) signed int ?!=?( FT *, FT * );" << endl;
+	cout << "forall( ftype FT ) FT &		 *?( FT * );" << endl;
+
+
+	cout << "forall( dtype DT ) void *		 ?=?(		     void *	     &,			DT * );" << endl;
+	cout << "forall( dtype DT ) void *		 ?=?(		     void * volatile &,			DT * );" << endl;
+	cout << "forall( dtype DT ) const void *		 ?=?( const	     void *	     &,			DT * );" << endl;
+	cout << "forall( dtype DT ) const void *		 ?=?( const	     void * volatile &,			DT * );" << endl;
+	cout << "forall( dtype DT ) const void *		 ?=?( const	     void *	     &, const		DT * );" << endl;
+	cout << "forall( dtype DT ) const void *		 ?=?( const	     void * volatile &, const		DT * );" << endl;
+	cout << "forall( dtype DT ) volatile void *	 ?=?(	    volatile void *	     &,			DT * );" << endl;
+	cout << "forall( dtype DT ) volatile void *	 ?=?(	    volatile void * volatile &,			DT * );" << endl;
+	cout << "forall( dtype DT ) volatile void *	 ?=?(	    volatile void *	     &,	      volatile	DT * );" << endl;
+	cout << "forall( dtype DT ) volatile void *	 ?=?(	    volatile void * volatile &,	      volatile	DT * );" << endl;
+	cout << "forall( dtype DT ) const volatile void * ?=?( const volatile void *	     &,			DT * );" << endl;
+	cout << "forall( dtype DT ) const volatile void * ?=?( const volatile void * volatile &,			DT * );" << endl;
+	cout << "forall( dtype DT ) const volatile void * ?=?( const volatile void *	     &, const		DT * );" << endl;
+	cout << "forall( dtype DT ) const volatile void * ?=?( const volatile void * volatile &, const		DT * );" << endl;
+	cout << "forall( dtype DT ) const volatile void * ?=?( const volatile void *	     &,	      volatile	DT * );" << endl;
+	cout << "forall( dtype DT ) const volatile void * ?=?( const volatile void * volatile &,	      volatile	DT * );" << endl;
+	cout << "forall( dtype DT ) const volatile void * ?=?( const volatile void *	     &, const volatile	DT * );" << endl;
+	cout << "forall( dtype DT ) const volatile void * ?=?( const volatile void * volatile &, const volatile	DT * );" << endl;
+
+	for (auto op : pointerOperators) {
+		for (auto type : { "DT"/*, "void"*/ } ) {
+			auto operands = count(op.name.begin(), op.name.end(), '?');
+			if (op.assignment) {
+				// const char * qualifiers[] = { "", "volatile ", "const ", "const volatile " };
+				switch(op.diffArg2) {
+					case Normal:
+						if (operands == 1) {
+							for (auto q : qualifiersSingle){
+								for (auto q2 : { " ", " volatile " }) {
+									cout << "forall(dtype DT" << op.sized <<  ") ";
+									cout << q << type << " * " << op.name << "(";
+									cout << q << type << " *" << q2 << "&";
+									cout << ");" << endl;
+								}
+							}
+						} else {
+							for (auto q : qualifiersPair){
+								for (auto q2 : { " ", " volatile " }) {
+									cout << "forall(dtype DT" << op.sized <<  ") ";
+									cout << q.first << type << " * " << op.name << "(";
+									cout << q.first << type << " *" << q2 << "&";
+
+									for (int i = 1; i < operands; ++i) {
+										cout << ", " << q.second << type << " *";
+									}
+									cout << ");" << endl;
+								}
+							}
+						}
+						break;
+					case PtrDiff:
+						for (auto q : qualifiersSingle){
+							for (auto q2 : { " ", " volatile " }) {
+								cout << "forall(dtype DT" << op.sized << ") ";
+								cout << q << type << " * " << op.name << "(";
+								cout << q << type << " *" << q2 << "&";
+
+								for (int i = 1; i < operands; ++i) {
+									cout << ", ptrdiff_t";
+								}
+								cout << ");" << endl;
+							}
+						}
+						break;
+					default:
+						abort();
+					}
+			} else {
+				switch(op.diffArg2) {
+					case Normal:
+						for (auto q : qualifiersSingle) {
+							cout << "forall(dtype DT" << op.sized << ") ";
+							if (op.diffReturn == "&") cout << q << type << " &"; // -- qualifiers
+							else if (op.diffReturn != "") cout << op.diffReturn;
+							else cout << q << type << " *";
+							cout << " " << op.name << "(";
+							for (int i = 0; i < operands; ++i) {
+								cout << q << type << " *";
+								if ((i+1) != operands) cout << ", ";
+							}
+							cout << ");" << endl;
+						}
+						break;
+					case CommPtrDiff:
+						for (auto q : qualifiersSingle) {
+							cout << "forall(dtype DT" << op.sized << ") ";
+							if (op.diffReturn == "&") cout << q << type << " &"; // -- qualifiers
+							else if (op.diffReturn != "") cout << op.diffReturn;
+							else cout << q << type << " *";
+							cout << " " << op.name << "(ptrdiff_t, " << q << type << " *);" << endl;
+						}
+						// fallthrough
+					case PtrDiff:
+						for (auto q : qualifiersSingle) {
+							cout << "forall(dtype DT" << op.sized << ") ";
+							if (op.diffReturn == "&") cout << q << type << " &"; // -- qualifiers
+							else if (op.diffReturn != "") cout << op.diffReturn;
+							else cout << q << type << " *";
+							cout << " " << op.name << "(" << q << type << " *, ptrdiff_t);" << endl;
+						}
+						break;
+				}
+			}
+		}
+		cout << endl;
+	}
+	cout << endl;
+
+	cout << "forall(dtype DT) DT *			?=?(		    DT *	  &, zero_t );" << endl;
+	cout << "forall(dtype DT) DT *			?=?(		    DT * volatile &, zero_t );" << endl;
+	cout << "forall(dtype DT) const DT *		?=?( const	    DT *	  &, zero_t );" << endl;
+	cout << "forall(dtype DT) const DT *		?=?( const	    DT * volatile &, zero_t );" << endl;
+	cout << "forall(dtype DT) volatile DT *	?=?( volatile	    DT *	  &, zero_t );" << endl;
+	cout << "forall(dtype DT) volatile DT *	?=?( volatile	    DT * volatile &, zero_t );" << endl;
+	cout << "forall(dtype DT) const volatile DT *	?=?( const volatile DT *	  &, zero_t );" << endl;
+	cout << "forall(dtype DT) const volatile DT *	?=?( const volatile DT * volatile &, zero_t );" << endl;
+	cout << "forall(ftype FT) FT *			?=?( FT *	   &, zero_t );" << endl;
+	cout << "forall(ftype FT) FT *			?=?( FT * volatile &, zero_t );" << endl;
+}
+
Index: src/prelude/prelude.cf
===================================================================
--- src/prelude/prelude.cf	(revision a1cfa0ce6a2f9c017b6a8df1d36fb3052c4c8b8c)
+++ 	(revision )
@@ -1,784 +1,0 @@
-//
-// Copyright (C) Glen Ditchfield 1994, 1999
-//
-// prelude.cf -- Standard Cforall Preample for C99
-//
-// Author           : Glen Ditchfield
-// Created On       : Sat Nov 29 07:23:41 2014
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Sun Apr 22 13:21:47 2018
-// Update Count     : 103
-//
-
-# 2 "prelude.cf"  // needed for error messages from this file
-
-// Section numbers from: http://plg.uwaterloo.ca/~cforall/refrat.pdf
-
-// ------------------------------------------------------------
-//
-// Section 6.7.11 Trait Declarations
-// Note: the sized trait is used in declarations later in this
-// file, so it must be out of order.
-//
-// ------------------------------------------------------------
-
-trait sized(dtype T) {};
-
-// ------------------------------------------------------------
-//
-// Section 4.1 Primary Expressions
-//
-// ------------------------------------------------------------
-
-//We have none
-
-// ------------------------------------------------------------
-//
-// Section 4.2 Postfix Operators
-//
-// ------------------------------------------------------------
-
-signed short		?++( signed short & ),			?++( volatile signed short & );
-signed short		?--( signed short & ),			?--( volatile signed short & );
-unsigned short		?++( unsigned short & ),		?++( volatile unsigned short & );
-unsigned short		?--( unsigned short & ),		?--( volatile unsigned short & );
-signed int		?++( signed int & ),			?++( volatile signed int & );
-signed int		?--( signed int & ),			?--( volatile signed int & );
-unsigned int		?++( unsigned int & ),			?++( volatile unsigned int & );
-unsigned int		?--( unsigned int & ),			?--( volatile unsigned int & );
-signed long int		?++( signed long int & ),		?++( volatile signed long int & );
-signed long int		?--( signed long int & ),		?--( volatile signed long int & );
-unsigned long int	?++( unsigned long int & ),		?++( volatile unsigned long int & );
-unsigned long int	?--( unsigned long int & ),		?--( volatile unsigned long int & );
-signed long long int	?++( signed long long int & ),		?++( volatile signed long long int & );
-signed long long int	?--( signed long long int & ),		?--( volatile signed long long int & );
-unsigned long long int	?++( unsigned long long int & ),	?++( volatile unsigned long long int & );
-unsigned long long int	?--( unsigned long long int & ),	?--( volatile unsigned long long int & );
-float			?++( float & ),				?++( volatile float & );
-float			?--( float & ),				?--( volatile float & );
-double			?++( double & ),			?++( volatile double & );
-double			?--( double & ),			?--( volatile double & );
-long double		?++( long double & ),			?++( volatile long double & );
-long double		?--( long double & ),			?--( volatile long double & );
-float _Complex		?++( float _Complex & ),		?++( volatile float _Complex & );
-float _Complex		?--( float _Complex & ),		?--( volatile float _Complex & );
-double _Complex		?++( double _Complex & ),		?++( volatile double _Complex & );
-double _Complex		?--( double _Complex & ),		?--( volatile double _Complex & );
-long double _Complex	?++( long double _Complex & ),		?++( volatile long double _Complex & );
-long double _Complex	?--( long double _Complex & ),		?--( volatile long double _Complex & );
-
-forall( dtype T | sized(T) ) T *			 ?++(		     T *& );
-forall( dtype T | sized(T) ) const T *		 ?++( const	     T *& );
-forall( dtype T | sized(T) ) volatile T *		 ?++(	    volatile T *& );
-forall( dtype T | sized(T) ) const volatile T *	 ?++( const volatile T *& );
-forall( dtype T | sized(T) ) T *			 ?--(		     T *& );
-forall( dtype T | sized(T) ) const T *		 ?--( const	     T *& );
-forall( dtype T | sized(T) ) volatile T *		 ?--(	    volatile T *& );
-forall( dtype T | sized(T) ) const volatile T *	 ?--( const volatile T *& );
-
-forall( dtype T | sized(T) ) T &		 ?[?](		      T *,	    ptrdiff_t );
-forall( dtype T | sized(T) ) const T &	 ?[?]( const	      T *,	    ptrdiff_t );
-forall( dtype T | sized(T) ) volatile T &	 ?[?](       volatile T *,	    ptrdiff_t );
-forall( dtype T | sized(T) ) const volatile T & ?[?]( const volatile T *,	    ptrdiff_t );
-forall( dtype T | sized(T) ) T &		 ?[?](		ptrdiff_t,		  T * );
-forall( dtype T | sized(T) ) const T &	 ?[?](		ptrdiff_t, const	  T * );
-forall( dtype T | sized(T) ) volatile T &	 ?[?](		ptrdiff_t,	 volatile T * );
-forall( dtype T | sized(T) ) const volatile T & ?[?](		ptrdiff_t, const volatile T * );
-
-// ------------------------------------------------------------
-//
-// Section 4.3 Unary Operators
-//
-// ------------------------------------------------------------
-
-signed short	++?( signed short & ),			--?( signed short & );
-signed int		++?( signed int & ),			--?( signed int & );
-unsigned short		++?( unsigned int & ),			--?( unsigned int & );
-unsigned int		++?( unsigned short & ),		--?( unsigned short & );
-signed long int		++?( signed long int & ),		--?( signed long int & );
-unsigned long int	++?( unsigned long int & ),		--?( unsigned long int & );
-signed long long int	++?( signed long long int & ),		--?( signed long long int & );
-unsigned long long int	++?( unsigned long long int & ),	--?( unsigned long long int & );
-float			++?( float & ),				--?( float & );
-double			++?( double & ),			--?( double & );
-long double		++?( long double & ),			--?( long double & );
-float _Complex		++?( float _Complex & ),		--?( float _Complex & );
-double _Complex		++?( double _Complex & ),		--?( double _Complex & );
-long double _Complex	++?( long double _Complex & ),		--?( long double _Complex & );
-
-forall( dtype T | sized(T) ) T *			 ++?(		     T *& );
-forall( dtype T | sized(T) ) const T *		 ++?( const	     T *& );
-forall( dtype T | sized(T) ) volatile T *		 ++?(	    volatile T *& );
-forall( dtype T | sized(T) ) const volatile T *	 ++?( const volatile T *& );
-forall( dtype T | sized(T) ) T *			 --?(		     T *& );
-forall( dtype T | sized(T) ) const T *		 --?( const	     T *& );
-forall( dtype T | sized(T) ) volatile T *		 --?(	    volatile T *& );
-forall( dtype T | sized(T) ) const volatile T *	 --?( const volatile T *& );
-
-forall( dtype T | sized(T) ) T &		 *?(		     T * );
-forall( dtype T | sized(T) ) const T &		 *?( const	     T * );
-forall( dtype T | sized(T) ) volatile T &	 *?(       volatile  T * );
-forall( dtype T | sized(T) ) const volatile T & *?( const volatile  T * );
-forall( ftype FT ) FT &		 *?( FT * );
-
-_Bool			+?( _Bool ),			-?( _Bool );
-signed int		+?( signed int ),		-?( signed int ),		~?( signed int );
-unsigned int		+?( unsigned int ),		-?( unsigned int ),		~?( unsigned int );
-signed long int		+?( signed long int ),		-?( signed long int ),		~?( signed long int );
-unsigned long int	+?( unsigned long int ),	-?( unsigned long int ),	~?( unsigned long int );
-signed long long int	+?( signed long long int ),	-?( signed long long int ),	~?( signed long long int );
-unsigned long long int	+?( unsigned long long int ),	-?( unsigned long long int ),	~?( unsigned long long int );
-float			+?( float ),			-?( float );
-double			+?( double ),			-?( double );
-long double		+?( long double ),		-?( long double );
-float _Complex		+?( float _Complex ),		-?( float _Complex );
-double _Complex		+?( double _Complex ),		-?( double _Complex );
-long double _Complex	+?( long double _Complex ),	-?( long double _Complex );
-
-signed int	!?( signed int ),		!?( unsigned int ),
-		!?( long int ),			!?( unsigned long int ),
-		!?( long long int ),		!?( unsigned long long int ),
-		!?( float ),			!?( double ),			!?( long double ),
-		!?( float _Complex ),		!?( double _Complex ),		!?( long double _Complex );
-
-forall( dtype DT ) int !?(                DT * );
-forall( dtype DT ) int !?( const          DT * );
-forall( dtype DT ) int !?(       volatile DT * );
-forall( dtype DT ) int !?( const volatile DT * );
-forall( ftype FT ) int !?( FT * );
-
-// ------------------------------------------------------------
-//
-// Section 4.5 Multiplicative Operators
-//
-// ------------------------------------------------------------
-
-signed int		?*?( signed int, signed int ),				?/?( signed int, signed int ),			?%?( signed int, signed int );
-unsigned int		?*?( unsigned int, unsigned int ),			?/?( unsigned int, unsigned int ),		?%?( unsigned int, unsigned int );
-signed long int		?*?( signed long int, signed long int ),		?/?( signed long int, signed long int ),	?%?( signed long int, signed long int );
-unsigned long int	?*?( unsigned long int, unsigned long int ),		?/?( unsigned long int, unsigned long int ),	?%?( unsigned long int, unsigned long int );
-signed long long int	?*?( signed long long int, signed long long int ),	?/?( signed long long int, signed long long int ), ?%?( signed long long int, signed long long int );
-unsigned long long int	?*?( unsigned long long int, unsigned long long int ),	?/?( unsigned long long int, unsigned long long int ), ?%?( unsigned long long int, unsigned long long int );
-float			?*?( float, float ),					?/?( float, float );
-double			?*?( double, double ),					?/?( double, double );
-long double		?*?( long double, long double ),			?/?( long double, long double );
-// gcc does not support _Imaginary
-//float _Imaginary	?*?( float _Imaginary, float _Imaginary),		?/?( float _Imaginary, float _Imaginary );
-//double _Imaginary	?*?( double _Imaginary, double _Imaginary),		?/?( double _Imaginary, double _Imaginary );
-//long double _Imaginary	?*?( long double _Imaginary, long double _Imaginary),	?/?( long double _Imaginary, long double _Imaginary );
-float _Complex		?*?( float _Complex, float _Complex ),			?/?( float _Complex, float _Complex );
-double _Complex		?*?( double _Complex, double _Complex ),		?/?( double _Complex, double _Complex );
-long double _Complex	?*?( long double _Complex, long double _Complex ),	?/?( long double _Complex, long double _Complex );
-
-// ------------------------------------------------------------
-//
-// Section 4.6 Additive Operators
-//
-// ------------------------------------------------------------
-
-_Bool			?+?( _Bool, _Bool ),					?-?( _Bool, _Bool );
-signed int		?+?( signed int, signed int ),				?-?( signed int, signed int );
-unsigned int		?+?( unsigned int, unsigned int ),			?-?( unsigned int, unsigned int );
-signed long int		?+?( signed long int, signed long int ),		?-?( signed long int, signed long int );
-unsigned long int	?+?( unsigned long int, unsigned long int ),		?-?( unsigned long int, unsigned long int );
-signed long long int	?+?( signed long long int, long long int  signed),	?-?( signed long long int, signed long long int );
-unsigned long long int	?+?( unsigned long long int, unsigned long long int ),	?-?( unsigned long long int, unsigned long long int );
-float			?+?( float, float ),					?-?( float, float );
-double			?+?( double, double ),					?-?( double, double );
-long double		?+?( long double, long double ),			?-?( long double, long double );
-float _Complex		?+?( float _Complex, float _Complex ),			?-?( float _Complex, float _Complex );
-double _Complex		?+?( double _Complex, double _Complex ),		?-?( double _Complex, double _Complex );
-long double _Complex	?+?( long double _Complex, long double _Complex ),	?-?( long double _Complex, long double _Complex );
-
-forall( dtype T | sized(T) ) T *		?+?(		    T *,	  ptrdiff_t );
-forall( dtype T | sized(T) ) T *		?+?(	      ptrdiff_t,		T * );
-forall( dtype T | sized(T) ) const T *		?+?( const	    T *,	  ptrdiff_t );
-forall( dtype T | sized(T) ) const T *		?+?(	      ptrdiff_t, const		T * );
-forall( dtype T | sized(T) ) volatile T *	?+?(	   volatile T *,	  ptrdiff_t );
-forall( dtype T | sized(T) ) volatile T *	?+?(	      ptrdiff_t,       volatile T * );
-forall( dtype T | sized(T) ) const volatile T *	?+?( const volatile T *,	  ptrdiff_t );
-forall( dtype T | sized(T) ) const volatile T *	?+?(	      ptrdiff_t, const volatile T * );
-forall( dtype T | sized(T) ) T *		?-?(		    T *,	  ptrdiff_t );
-forall( dtype T | sized(T) ) const T *		?-?( const	    T *,	  ptrdiff_t );
-forall( dtype T | sized(T) ) volatile T *	?-?(	   volatile T *,	  ptrdiff_t );
-forall( dtype T | sized(T) ) const volatile T *	?-?( const volatile T *,	  ptrdiff_t );
-forall( dtype T | sized(T) ) ptrdiff_t		?-?( const volatile T *, const volatile T * );
-
-// ------------------------------------------------------------
-//
-// Section 4.7 Bitwise Shift Operators
-//
-// ------------------------------------------------------------
-
-signed int		?<<?( signed int, signed int ),				?>>?( signed int, signed int );
-unsigned int		?<<?( unsigned int, unsigned int ),			?>>?( unsigned int, unsigned int );
-signed long int		?<<?( signed long int, signed long int ),		?>>?( signed long int, signed long int );
-unsigned long int	?<<?( unsigned long int, unsigned long int ),		?>>?( unsigned long int, unsigned long int );
-signed long long int	?<<?( signed long long int, signed long long int ),	?>>?( signed long long int, signed long long int );
-unsigned long long int	?<<?( unsigned long long int, unsigned long long int ),	?>>?( unsigned long long int, unsigned long long int );
-
-// ------------------------------------------------------------
-//
-// Section 4.8 Relational Operators
-//
-// ------------------------------------------------------------
-
-signed int ?<?( _Bool, _Bool ),						?<=?( _Bool, _Bool ),
-	   ?>?( _Bool, _Bool ),						?>=?( _Bool, _Bool );
-signed int ?<?( char, char ),						?<=?( char, char ),
-	   ?>?( char, char ),						?>=?( char, char );
-signed int ?<?( signed char, signed char ),				?<=?( signed char, signed char ),
-	   ?>?( signed char, signed char ),				?>=?( signed char, signed char );
-signed int ?<?( unsigned char, unsigned char ),				?<=?( unsigned char, unsigned char ),
-	   ?>?( unsigned char, unsigned char ),				?>=?( unsigned char, unsigned char );
-signed int ?<?( signed short, signed short ),				?<=?( signed short, signed short ),
-	   ?>?( signed short, signed short ),				?>=?( signed short, signed short );
-signed int ?<?( unsigned short, unsigned short ),			?<=?( unsigned short, unsigned short ),
-	   ?>?( unsigned short, unsigned short ),			?>=?( unsigned short, unsigned short );
-signed int ?<?( signed int, signed int ),				?<=?( signed int, signed int ),
-	   ?>?( signed int, signed int ),				?>=?( signed int, signed int );
-signed int ?<?( unsigned int, unsigned int ),				?<=?( unsigned int, unsigned int ),
-	   ?>?( unsigned int, unsigned int ),				?>=?( unsigned int, unsigned int );
-signed int ?<?( signed long int, signed long int ),			?<=?( signed long int, signed long int ),
-	   ?>?( signed long int, signed long int ),			?>=?( signed long int, signed long int );
-signed int ?<?( unsigned long int, unsigned long int ),			?<=?( unsigned long int, unsigned long int ),
-	   ?>?( unsigned long int, unsigned long int ),			?>=?( unsigned long int, unsigned long int );
-signed int ?<?( signed long long int, signed long long int ),		?<=?( signed long long int, signed long long int ),
-	   ?>?( signed long long int, signed long long int ),		?>=?( signed long long int, signed long long int );
-signed int ?<?( unsigned long long int, unsigned long long int ),	?<=?( unsigned long long int, unsigned long long int ),
-	   ?>?( unsigned long long int, unsigned long long int ),	?>=?( unsigned long long int, unsigned long long int );
-signed int ?<?( float, float ),						?<=?( float, float ),
-	   ?>?( float, float ),						?>=?( float, float );
-signed int ?<?( double, double ),					?<=?( double, double ),
-	   ?>?( double, double ),					?>=?( double, double );
-signed int ?<?( long double, long double ),				?<=?( long double, long double ),
-	   ?>?( long double, long double ),				?>=?( long double, long double );
-
-forall( dtype DT ) signed int ?<?(                 DT *,                DT * );
-forall( dtype DT ) signed int ?<?(  const          DT *, const          DT * );
-forall( dtype DT ) signed int ?<?(        volatile DT *,       volatile DT * );
-forall( dtype DT ) signed int ?<?(  const volatile DT *, const volatile DT * );
-
-forall( dtype DT ) signed int ?>?(                 DT *,                DT * );
-forall( dtype DT ) signed int ?>?(  const          DT *, const          DT * );
-forall( dtype DT ) signed int ?>?(        volatile DT *,       volatile DT * );
-forall( dtype DT ) signed int ?>?(  const volatile DT *, const volatile DT * );
-
-forall( dtype DT ) signed int ?<=?(                 DT *,                DT * );
-forall( dtype DT ) signed int ?<=?(  const          DT *, const          DT * );
-forall( dtype DT ) signed int ?<=?(        volatile DT *,       volatile DT * );
-forall( dtype DT ) signed int ?<=?( const volatile DT *, const volatile DT * );
-
-forall( dtype DT ) signed int ?>=?(                 DT *,                DT * );
-forall( dtype DT ) signed int ?>=?(  const          DT *, const          DT * );
-forall( dtype DT ) signed int ?>=?(        volatile DT *,       volatile DT * );
-forall( dtype DT ) signed int ?>=?( const volatile DT *, const volatile DT * );
-
-// ------------------------------------------------------------
-//
-// Section 4.9 Equality Operators
-//
-// ------------------------------------------------------------
-
-signed int ?==?( _Bool, _Bool ),							?!=?( _Bool, _Bool );
-signed int ?==?( char, char ),								?!=?( char, char );
-signed int ?==?( signed char, signed char ),				?!=?( signed char, signed char );
-signed int ?==?( unsigned char, unsigned char ),			?!=?( unsigned char, unsigned char );
-signed int ?==?( signed short, signed short ),				?!=?( signed short, signed short );
-signed int ?==?( unsigned short, unsigned short ),			?!=?( unsigned short, unsigned short );
-signed int ?==?( signed int, signed int ),					?!=?( signed int, signed int );
-signed int ?==?( unsigned int, unsigned int ),					?!=?( unsigned int, unsigned int );
-signed int ?==?( signed long int, signed long int ),				?!=?( signed long int, signed long int );
-signed int ?==?( unsigned long int, unsigned long int ),			?!=?( unsigned long int, unsigned long int );
-signed int ?==?( signed long long int, long long int  signed),		?!=?( signed long long int, signed long long int );
-signed int ?==?( unsigned long long int, unsigned long long int ),	?!=?( unsigned long long int, unsigned long long int );
-signed int ?==?( float, float ),							?!=?( float, float );
-signed int ?==?( double, double ),							?!=?( double, double );
-signed int ?==?( long double, long double ),					?!=?( long double, long double );
-signed int ?==?( float _Complex, float _Complex ),				?!=?( float _Complex, float _Complex );
-signed int ?==?( double _Complex, double _Complex ),				?!=?( double _Complex, double _Complex );
-signed int ?==?( long double _Complex, long double _Complex ),		?!=?( long double _Complex, long double _Complex );
-signed int ?==?( zero_t, zero_t ),							?!=?( zero_t, zero_t );
-signed int ?==?( one_t, one_t ),							?!=?( one_t, one_t );
-
-forall( dtype DT ) signed int ?==?(		   DT *,		DT * );
-forall( dtype DT ) signed int ?==?( const	   DT *, const		DT * );
-forall( dtype DT ) signed int ?==?(       volatile DT *,       volatile DT * );
-forall( dtype DT ) signed int ?==?( const volatile DT *, const volatile DT * );
-forall( ftype FT ) signed int ?==?( FT *, FT * );
-forall( dtype DT ) signed int ?!=?(		   DT *,		DT * );
-forall( dtype DT ) signed int ?!=?( const	   DT *, const		DT * );
-forall( dtype DT ) signed int ?!=?(       volatile DT *,       volatile DT * );
-forall( dtype DT ) signed int ?!=?( const volatile DT *, const volatile DT * );
-forall( ftype FT ) signed int ?!=?( FT *, FT * );
-
-// forall( dtype DT ) signed int ?==?( const volatile DT   *, const volatile void * );
-// forall( dtype DT ) signed int ?==?( const volatile void *, const volatile DT * );
-// forall( dtype DT ) signed int ?!=?( const volatile DT   *, const volatile void * );
-// forall( dtype DT ) signed int ?!=?( const volatile void *, const volatile DT * );
-
-// forall( dtype DT ) signed int ?==?( const volatile DT *, zero_t );
-// forall( dtype DT ) signed int ?==?( zero_t, const volatile DT * );
-// forall( ftype FT ) signed int ?==?( FT *, zero_t );
-// forall( ftype FT ) signed int ?==?( zero_t, FT * );
-// forall( dtype DT ) signed int ?!=?( const volatile DT *, zero_t );
-// forall( dtype DT ) signed int ?!=?( zero_t, const volatile DT * );
-// forall( ftype FT ) signed int ?!=?( FT *, zero_t );
-// forall( ftype FT ) signed int ?!=?( zero_t, FT * );
-
-// ------------------------------------------------------------
-//
-// Section 4.10 Bitwise AND Operators
-//
-// ------------------------------------------------------------
-
-_Bool			?&?( _Bool, _Bool );
-signed int		?&?( signed int, signed int );
-unsigned int		?&?( unsigned int, unsigned int );
-signed long int		?&?( signed long int, signed long int );
-unsigned long int	?&?( unsigned long int, unsigned long int );
-signed long long int	?&?( signed long long int, signed long long int );
-unsigned long long int	?&?( unsigned long long int, unsigned long long int );
-
-// ------------------------------------------------------------
-//
-// Section 4.11 Bitwise XOR Operators
-//
-// ------------------------------------------------------------
-
-_Bool			?^?( _Bool, _Bool );
-signed int		?^?( signed int, signed int );
-unsigned int		?^?( unsigned int, unsigned int );
-signed long int		?^?( signed long int, signed long int );
-unsigned long int	?^?( unsigned long int, unsigned long int );
-signed long long int	?^?( signed long long int, signed long long int );
-unsigned long long int	?^?( unsigned long long int, unsigned long long int );
-
-// ------------------------------------------------------------
-//
-// Section 4.12 Bitwise OR Operators
-//
-// ------------------------------------------------------------
-
-_Bool			?|?( _Bool, _Bool );
-signed int		?|?( signed int, signed int );
-unsigned int		?|?( unsigned int, unsigned int );
-signed long int		?|?( signed long int, signed long int );
-unsigned long int	?|?( unsigned long int, unsigned long int );
-signed long long int	?|?( signed long long int, signed long long int );
-unsigned long long int	?|?( unsigned long long int, unsigned long long int );
-
-// ------------------------------------------------------------
-//
-// Section 4.16 Assignment Operator
-//
-// ------------------------------------------------------------
-
-forall( ftype FT ) FT *			?=?( FT *&, FT * );
-forall( ftype FT ) FT *			?=?( FT * volatile &, FT * );
-
-forall( dtype DT ) DT *			?=?(		     DT *	   &,			DT * );
-forall( dtype DT ) DT *			?=?(		     DT * volatile &,			DT * );
-forall( dtype DT ) const DT *		?=?( const	     DT *	   &,			DT * );
-forall( dtype DT ) const DT *		?=?( const	     DT * volatile &,			DT * );
-forall( dtype DT ) const DT *		?=?( const	     DT *	   &, const		DT * );
-forall( dtype DT ) const DT *		?=?( const	     DT * volatile &, const		DT * );
-forall( dtype DT ) volatile DT *	?=?(	   volatile  DT *	   &,			DT * );
-forall( dtype DT ) volatile DT *	?=?(	   volatile  DT * volatile &,			DT * );
-forall( dtype DT ) volatile DT *	?=?(	   volatile  DT *	   &,	    volatile	DT * );
-forall( dtype DT ) volatile DT *	?=?(	   volatile  DT * volatile &,	    volatile	DT * );
-
-forall( dtype DT ) const volatile DT *	?=?( const volatile  DT *	   &,			DT * );
-forall( dtype DT ) const volatile DT *  ?=?( const volatile  DT * volatile &,			DT * );
-forall( dtype DT ) const volatile DT *  ?=?( const volatile  DT *	   &, const		DT * );
-forall( dtype DT ) const volatile DT *  ?=?( const volatile  DT * volatile &, const		DT * );
-forall( dtype DT ) const volatile DT *  ?=?( const volatile  DT *	   &,	    volatile	DT * );
-forall( dtype DT ) const volatile DT *  ?=?( const volatile  DT * volatile &,	    volatile	DT * );
-forall( dtype DT ) const volatile DT *  ?=?( const volatile  DT *	   &, const volatile	DT * );
-forall( dtype DT ) const volatile DT *  ?=?( const volatile  DT * volatile &, const volatile	DT * );
-
-forall( dtype DT ) void *		 ?=?(		     void *	     &,			DT * );
-forall( dtype DT ) void *		 ?=?(		     void * volatile &,			DT * );
-forall( dtype DT ) const void *		 ?=?( const	     void *	     &,			DT * );
-forall( dtype DT ) const void *		 ?=?( const	     void * volatile &,			DT * );
-forall( dtype DT ) const void *		 ?=?( const	     void *	     &, const		DT * );
-forall( dtype DT ) const void *		 ?=?( const	     void * volatile &, const		DT * );
-forall( dtype DT ) volatile void *	 ?=?(	    volatile void *	     &,			DT * );
-forall( dtype DT ) volatile void *	 ?=?(	    volatile void * volatile &,			DT * );
-forall( dtype DT ) volatile void *	 ?=?(	    volatile void *	     &,	      volatile	DT * );
-forall( dtype DT ) volatile void *	 ?=?(	    volatile void * volatile &,	      volatile	DT * );
-forall( dtype DT ) const volatile void * ?=?( const volatile void *	     &,			DT * );
-forall( dtype DT ) const volatile void * ?=?( const volatile void * volatile &,			DT * );
-forall( dtype DT ) const volatile void * ?=?( const volatile void *	     &, const		DT * );
-forall( dtype DT ) const volatile void * ?=?( const volatile void * volatile &, const		DT * );
-forall( dtype DT ) const volatile void * ?=?( const volatile void *	     &,	      volatile	DT * );
-forall( dtype DT ) const volatile void * ?=?( const volatile void * volatile &,	      volatile	DT * );
-forall( dtype DT ) const volatile void * ?=?( const volatile void *	     &, const volatile	DT * );
-forall( dtype DT ) const volatile void * ?=?( const volatile void * volatile &, const volatile	DT * );
-
-//forall( dtype DT ) DT *			?=?(		    DT *	  &, zero_t );
-//forall( dtype DT ) DT *			?=?(		    DT * volatile &, zero_t );
-forall( dtype DT ) const DT *		?=?( const	    DT *	  &, zero_t );
-forall( dtype DT ) const DT *		?=?( const	    DT * volatile &, zero_t );
-//forall( dtype DT ) volatile DT *	?=?( volatile	    DT *	  &, zero_t );
-//forall( dtype DT ) volatile DT *	?=?( volatile	    DT * volatile &, zero_t );
-forall( dtype DT ) const volatile DT *	?=?( const volatile DT *	  &, zero_t );
-forall( dtype DT ) const volatile DT *	?=?( const volatile DT * volatile &, zero_t );
-
-forall( ftype FT ) FT *			?=?( FT *	   &, zero_t );
-forall( ftype FT ) FT *			?=?( FT * volatile &, zero_t );
-
-forall( dtype T | sized(T) ) T *		?+=?(		     T *	  &, ptrdiff_t );
-forall( dtype T | sized(T) ) T *		?+=?(		     T * volatile &, ptrdiff_t );
-forall( dtype T | sized(T) ) const T *		?+=?( const	     T *	  &, ptrdiff_t );
-forall( dtype T | sized(T) ) const T *		?+=?( const	     T * volatile &, ptrdiff_t );
-forall( dtype T | sized(T) ) volatile T *	?+=?(	    volatile T *	  &, ptrdiff_t );
-forall( dtype T | sized(T) ) volatile T *	?+=?(	    volatile T * volatile &, ptrdiff_t );
-forall( dtype T | sized(T) ) const volatile T *	?+=?( const volatile T *	  &, ptrdiff_t );
-forall( dtype T | sized(T) ) const volatile T *	?+=?( const volatile T * volatile &, ptrdiff_t );
-forall( dtype T | sized(T) ) T *		?-=?(		     T *	  &, ptrdiff_t );
-forall( dtype T | sized(T) ) T *		?-=?(		     T * volatile &, ptrdiff_t );
-forall( dtype T | sized(T) ) const T *		?-=?( const	     T *	  &, ptrdiff_t );
-forall( dtype T | sized(T) ) const T *		?-=?( const	     T * volatile &, ptrdiff_t );
-forall( dtype T | sized(T) ) volatile T *	?-=?(	    volatile T *	  &, ptrdiff_t );
-forall( dtype T | sized(T) ) volatile T *	?-=?(	    volatile T * volatile &, ptrdiff_t );
-forall( dtype T | sized(T) ) const volatile T *	?-=?( const volatile T *	  &, ptrdiff_t );
-forall( dtype T | sized(T) ) const volatile T *	?-=?( const volatile T * volatile &, ptrdiff_t );
-
-_Bool			?=?( _Bool &, _Bool ),					?=?( volatile _Bool &, _Bool );
-char			?=?( char &, char ),					?=?( volatile char &, char );
-char signed		?=?( char signed &, char signed ),			?=?( volatile char signed &, char signed );
-char unsigned		?=?( char unsigned &, char unsigned ),			?=?( volatile char unsigned &, char unsigned );
-int short		?=?( int short &, int short ),				?=?( volatile int short &, int short );
-int short unsigned	?=?( int short unsigned &, int short unsigned ),	?=?( volatile int short unsigned &, int short unsigned );
-signed int		?=?( signed int &, signed int ),			?=?( volatile signed int &, signed int );
-unsigned int		?=?( unsigned &, unsigned ),				?=?( volatile unsigned &, unsigned );
-signed long int		?=?( signed long int &, signed long int ),		?=?( volatile signed long int &, signed long int );
-unsigned long int	?=?( unsigned long int &, unsigned long int ),		?=?( volatile unsigned long int &, unsigned long int );
-signed long long int	?=?( signed long long int &, signed long long int ),	?=?( volatile signed long long int &, signed long long int );
-unsigned long long int	?=?( unsigned long long int &, unsigned long long int ), ?=?( volatile unsigned long long int &, unsigned long long int );
-zero_t			?=?( zero_t &, zero_t );
-one_t			?=?( one_t &, one_t );
-
-
-char			?*=?( char &, char ),					?*=?( volatile char &, char );
-char signed		?*=?( char signed &, char signed ),			?*=?( volatile char signed &, char signed );
-char unsigned		?*=?( char unsigned &, char unsigned ),			?*=?( volatile char unsigned &, char unsigned );
-int short		?*=?( int short &, int short ),				?*=?( volatile int short &, int short );
-int short unsigned	?*=?( int short unsigned &, int short unsigned ),	?*=?( volatile int short unsigned &, int short unsigned );
-signed int		?*=?( signed int &, signed int ),			?*=?( volatile signed int &, signed int );
-unsigned int		?*=?( unsigned &, unsigned ),				?*=?( volatile unsigned &, unsigned );
-signed long int		?*=?( signed long int &, signed long int ),		?*=?( volatile signed long int &, signed long int );
-unsigned long int	?*=?( unsigned long int &, unsigned long int ),		?*=?( volatile unsigned long int &, unsigned long int );
-signed long long int	?*=?( signed long long int &, signed long long int ),	?*=?( volatile signed long long int &, signed long long int );
-unsigned long long int	?*=?( unsigned long long int &, unsigned long long int ), ?*=?( volatile unsigned long long int &, unsigned long long int );
-
-_Bool			?/=?( _Bool &, _Bool ),					?/=?( volatile _Bool &, _Bool );
-char			?/=?( char &, char ),					?/=?( volatile char &, char );
-char signed		?/=?( char signed &, char signed ),			?/=?( volatile char signed &, char signed );
-char unsigned		?/=?( char unsigned &, char unsigned ),			?/=?( volatile char unsigned &, char unsigned );
-int short		?/=?( int short &, int short ),				?/=?( volatile int short &, int short );
-int short unsigned	?/=?( int short unsigned &, int short unsigned ),	?/=?( volatile int short unsigned &, int short unsigned );
-signed int		?/=?( signed int &, signed int ),			?/=?( volatile signed int &, signed int );
-unsigned int		?/=?( unsigned &, unsigned ),				?/=?( volatile unsigned &, unsigned );
-signed long int		?/=?( signed long int &, signed long int ),		?/=?( volatile signed long int &, signed long int );
-unsigned long int	?/=?( unsigned long int &, unsigned long int ),		?/=?( volatile unsigned long int &, unsigned long int );
-signed long long int	?/=?( signed long long int &, signed long long int ),	?/=?( volatile signed long long int &, signed long long int );
-unsigned long long int	?/=?( unsigned long long int &, unsigned long long int ), ?/=?( volatile unsigned long long int &, unsigned long long int );
-
-_Bool			?%=?( _Bool &, _Bool ),					?%=?( volatile _Bool &, _Bool );
-char			?%=?( char &, char ),					?%=?( volatile char &, char );
-char signed		?%=?( char signed &, char signed ),			?%=?( volatile char signed &, char signed );
-char unsigned		?%=?( char unsigned &, char unsigned ),			?%=?( volatile char unsigned &, char unsigned );
-int short		?%=?( int short &, int short ),				?%=?( volatile int short &, int short );
-int short unsigned	?%=?( int short unsigned &, int short unsigned ),	?%=?( volatile int short unsigned &, int short unsigned );
-signed int		?%=?( signed int &, signed int ),			?%=?( volatile signed int &, signed int );
-unsigned int		?%=?( unsigned &, unsigned ),				?%=?( volatile unsigned &, unsigned );
-signed long int		?%=?( signed long int &, signed long int ),		?%=?( volatile signed long int &, signed long int );
-unsigned long int	?%=?( unsigned long int &, unsigned long int ),		?%=?( volatile unsigned long int &, unsigned long int );
-signed long long int	?%=?( signed long long int &, signed long long int ),	?%=?( volatile signed long long int &, signed long long int );
-unsigned long long int	?%=?( unsigned long long int &, unsigned long long int ), ?%=?( volatile unsigned long long int &, unsigned long long int );
-
-_Bool			?+=?( _Bool &, _Bool ),					?+=?( volatile _Bool &, _Bool );
-char			?+=?( char &, char ),					?+=?( volatile char &, char );
-char signed		?+=?( char signed &, char signed ),			?+=?( volatile char signed &, char signed );
-char unsigned		?+=?( char unsigned &, char unsigned ),			?+=?( volatile char unsigned &, char unsigned );
-int short		?+=?( int short &, int short ),				?+=?( volatile int short &, int short );
-int short unsigned	?+=?( int short unsigned &, int short unsigned ),	?+=?( volatile int short unsigned &, int short unsigned );
-signed int		?+=?( signed int &, signed int ),			?+=?( volatile signed int &, signed int );
-unsigned int		?+=?( unsigned &, unsigned ),				?+=?( volatile unsigned &, unsigned );
-signed long int		?+=?( signed long int &, signed long int ),		?+=?( volatile signed long int &, signed long int );
-unsigned long int	?+=?( unsigned long int &, unsigned long int ),		?+=?( volatile unsigned long int &, unsigned long int );
-signed long long int	?+=?( signed long long int &, signed long long int ),	?+=?( volatile signed long long int &, signed long long int );
-unsigned long long int	?+=?( unsigned long long int &, unsigned long long int ), ?+=?( volatile unsigned long long int &, unsigned long long int );
-//signed int128		?+=?( signed int128 &, signed int128 ),			?+=?( volatile signed int128 &, signed int128 );
-//unsigned int128		?+=?( unsigned int128 &, unsigned int128 ),		?+=?( volatile unsigned int128 &, unsigned int128 );
-
-_Bool			?-=?( _Bool &, _Bool ),					?-=?( volatile _Bool &, _Bool );
-char			?-=?( char &, char ),					?-=?( volatile char &, char );
-char signed		?-=?( char signed &, char signed ),			?-=?( volatile char signed &, char signed );
-char unsigned		?-=?( char unsigned &, char unsigned ),			?-=?( volatile char unsigned &, char unsigned );
-int short		?-=?( int short &, int short ),				?-=?( volatile int short &, int short );
-int short unsigned	?-=?( int short unsigned &, int short unsigned ),	?-=?( volatile int short unsigned &, int short unsigned );
-signed int		?-=?( signed int &, signed int ),			?-=?( volatile signed int &, signed int );
-unsigned int		?-=?( unsigned &, unsigned ),				?-=?( volatile unsigned &, unsigned );
-signed long int		?-=?( signed long int &, signed long int ),		?-=?( volatile signed long int &, signed long int );
-unsigned long int	?-=?( unsigned long int &, unsigned long int ),		?-=?( volatile unsigned long int &, unsigned long int );
-signed long long int	?-=?( signed long long int &, signed long long int ),	?-=?( volatile signed long long int &, signed long long int );
-unsigned long long int	?-=?( unsigned long long int &, unsigned long long int ), ?-=?( volatile unsigned long long int &, unsigned long long int );
-
-char			?<<=?( char &, char ),					?<<=?( volatile char &, char );
-char signed		?<<=?( char signed &, char signed ),			?<<=?( volatile char signed &, char signed );
-char unsigned		?<<=?( char unsigned &, char unsigned ),		?<<=?( volatile char unsigned &, char unsigned );
-int short		?<<=?( int short &, int short ),			?<<=?( volatile int short &, int short );
-int short unsigned	?<<=?( int short unsigned &, int short unsigned ),	?<<=?( volatile int short unsigned &, int short unsigned );
-signed int		?<<=?( signed int &, signed int ),			?<<=?( volatile signed int &, signed int );
-unsigned int		?<<=?( unsigned &, unsigned ),				?<<=?( volatile unsigned &, unsigned );
-signed long int		?<<=?( signed long int &, signed long int ),		?<<=?( volatile signed long int &, signed long int );
-unsigned long int	?<<=?( unsigned long int &, unsigned long int ),	?<<=?( volatile unsigned long int &, unsigned long int );
-signed long long int	?<<=?( signed long long int &, signed long long int ),	?<<=?( volatile signed long long int &, signed long long int );
-unsigned long long int	?<<=?( unsigned long long int &, unsigned long long int ), ?<<=?( volatile unsigned long long int &, unsigned long long int );
-
-char			?>>=?( char &, char ),					?>>=?( volatile char &, char );
-char signed		?>>=?( char signed &, char signed ),			?>>=?( volatile char signed &, char signed );
-char unsigned		?>>=?( char unsigned &, char unsigned ),		?>>=?( volatile char unsigned &, char unsigned );
-int short		?>>=?( int short &, int short ),			?>>=?( volatile int short &, int short );
-int short unsigned	?>>=?( int short unsigned &, int short unsigned ),	?>>=?( volatile int short unsigned &, int short unsigned );
-signed int		?>>=?( signed int &, signed int ),			?>>=?( volatile signed int &, signed int );
-unsigned int		?>>=?( unsigned &, unsigned ),				?>>=?( volatile unsigned &, unsigned );
-signed long int		?>>=?( signed long int &, signed long int ),		?>>=?( volatile signed long int &, signed long int );
-unsigned long int	?>>=?( unsigned long int &, unsigned long int ),	?>>=?( volatile unsigned long int &, unsigned long int );
-signed long long int	?>>=?( signed long long int &, signed long long int ),	?>>=?( volatile signed long long int &, signed long long int );
-unsigned long long int	?>>=?( unsigned long long int &, unsigned long long int ), ?>>=?( volatile unsigned long long int &, unsigned long long int );
-
-_Bool			?&=?( _Bool &, _Bool ),					?&=?( volatile _Bool &, _Bool );
-char			?&=?( char &, char ),					?&=?( volatile char &, char );
-char signed		?&=?( char signed &, char signed ),			?&=?( volatile char signed &, char signed );
-char unsigned		?&=?( char unsigned &, char unsigned ),			?&=?( volatile char unsigned &, char unsigned );
-int short		?&=?( int short &, int short ),				?&=?( volatile int short &, int short );
-int short unsigned	?&=?( int short unsigned &, int short unsigned ),	?&=?( volatile int short unsigned &, int short unsigned );
-signed int		?&=?( signed int &, signed int ),			?&=?( volatile signed int &, signed int );
-unsigned int		?&=?( unsigned &, unsigned ),				?&=?( volatile unsigned &, unsigned );
-signed long int		?&=?( signed long int &, signed long int ),		?&=?( volatile signed long int &, signed long int );
-unsigned long int	?&=?( unsigned long int &, unsigned long int ),		?&=?( volatile unsigned long int &, unsigned long int );
-signed long long int	?&=?( signed long long int &, signed long long int ),	?&=?( volatile signed long long int &, signed long long int );
-unsigned long long int	?&=?( unsigned long long int &, unsigned long long int ), ?&=?( volatile unsigned long long int &, unsigned long long int );
-
-_Bool			?|=?( _Bool &, _Bool ),					?|=?( volatile _Bool &, _Bool );
-char			?|=?( char &, char ),					?|=?( volatile char &, char );
-char signed		?|=?( char signed &, char signed ),			?|=?( volatile char signed &, char signed );
-char unsigned		?|=?( char unsigned &, char unsigned ),			?|=?( volatile char unsigned &, char unsigned );
-int short		?|=?( int short &, int short ),				?|=?( volatile int short &, int short );
-int short unsigned	?|=?( int short unsigned &, int short unsigned ),	?|=?( volatile int short unsigned &, int short unsigned );
-signed int		?|=?( signed int &, signed int ),			?|=?( volatile signed int &, signed int );
-unsigned int		?|=?( unsigned &, unsigned ),				?|=?( volatile unsigned &, unsigned );
-signed long int		?|=?( signed long int &, signed long int ),		?|=?( volatile signed long int &, signed long int );
-unsigned long int	?|=?( unsigned long int &, unsigned long int ),		?|=?( volatile unsigned long int &, unsigned long int );
-signed long long int	?|=?( signed long long int &, signed long long int ),	?|=?( volatile signed long long int &, signed long long int );
-unsigned long long int	?|=?( unsigned long long int &, unsigned long long int ), ?|=?( volatile unsigned long long int &, unsigned long long int );
-
-_Bool			?^=?( _Bool &, _Bool ),					?^=?( volatile _Bool &, _Bool );
-char			?^=?( char &, char ),					?^=?( volatile char &, char );
-char signed		?^=?( char signed &, char signed ),			?^=?( volatile char signed &, char signed );
-char unsigned		?^=?( char unsigned &, char unsigned ),			?^=?( volatile char unsigned &, char unsigned );
-int short		?^=?( int short &, int short ),				?^=?( volatile int short &, int short );
-int short unsigned	?^=?( int short unsigned &, int short unsigned ),	?^=?( volatile int short unsigned &, int short unsigned );
-signed int		?^=?( signed int &, signed int ),			?^=?( volatile signed int &, signed int );
-unsigned int		?^=?( unsigned &, unsigned ),				?^=?( volatile unsigned &, unsigned );
-signed long int		?^=?( signed long int &, signed long int ),		?^=?( volatile signed long int &, signed long int );
-unsigned long int	?^=?( unsigned long int &, unsigned long int ),		?^=?( volatile unsigned long int &, unsigned long int );
-signed long long int	?^=?( signed long long int &, signed long long int ),	?^=?( volatile signed long long int &, signed long long int );
-unsigned long long int	?^=?( unsigned long long int &, unsigned long long int ), ?^=?( volatile unsigned long long int &, unsigned long long int );
-
-float			?=?(  float &, float ), ?=?(  volatile float &, float ),
-			?*=?( float &, float ), ?*=?( volatile float &, float ),
-			?/=?( float &, float ), ?/=?( volatile float &, float ),
-			?+=?( float &, float ), ?+=?( volatile float &, float ),
-			?-=?( float &, float ), ?-=?( volatile float &, float );
-
-double			?=?(  double &, double ), ?=?(  volatile double &, double ),
-			?*=?( double &, double ), ?*=?( volatile double &, double ),
-			?/=?( double &, double ), ?/=?( volatile double &, double ),
-			?+=?( double &, double ), ?+=?( volatile double &, double ),
-			?-=?( double &, double ), ?-=?( volatile double &, double );
-
-long double		?=?(  long double &, long double ), ?=?(  volatile long double &, long double ),
-			?*=?( long double &, long double ), ?*=?( volatile long double &, long double ),
-			?/=?( long double &, long double ), ?/=?( volatile long double &, long double ),
-			?+=?( long double &, long double ), ?+=?( volatile long double &, long double ),
-			?-=?( long double &, long double ), ?-=?( volatile long double &, long double );
-
-float _Complex		?=?(  float _Complex &, float _Complex ), ?=?(  volatile float _Complex &, float _Complex ),
-			?*=?( float _Complex &, float _Complex ), ?*=?( volatile float _Complex &, float _Complex ),
-			?/=?( float _Complex &, float _Complex ), ?/=?( volatile float _Complex &, float _Complex ),
-			?+=?( float _Complex &, float _Complex ), ?+=?( volatile float _Complex &, float _Complex ),
-			?-=?( float _Complex &, float _Complex ), ?-=?( volatile float _Complex &, float _Complex );
-
-double _Complex		?=?(  double _Complex &, double _Complex ), ?=?(  volatile double _Complex &, double _Complex ),
-			?*=?( double _Complex &, double _Complex ), ?*=?( volatile double _Complex &, double _Complex ),
-			?/=?( double _Complex &, double _Complex ), ?/=?( volatile double _Complex &, double _Complex ),
-			?+=?( double _Complex &, double _Complex ), ?+=?( volatile double _Complex &, double _Complex ),
-			?-=?( double _Complex &, double _Complex ), ?-=?( volatile double _Complex &, double _Complex );
-
-long double _Complex	?=?(  long double _Complex &, long double _Complex ), ?=?(  volatile long double _Complex &, long double _Complex ),
-			?*=?( long double _Complex &, long double _Complex ), ?*=?( volatile long double _Complex &, long double _Complex ),
-			?/=?( long double _Complex &, long double _Complex ), ?/=?( volatile long double _Complex &, long double _Complex ),
-			?+=?( long double _Complex &, long double _Complex ), ?+=?( volatile long double _Complex &, long double _Complex ),
-			?-=?( long double _Complex &, long double _Complex ), ?-=?( volatile long double _Complex &, long double _Complex );
-
-
-// ------------------------------------------------------------
-//
-// Section ??? Constructors and Destructors
-//
-// ------------------------------------------------------------
-
-// default ctor
-void	?{}( _Bool & );
-void	?{}( char & );
-void	?{}( unsigned char & );
-void	?{}( char signed & );
-void	?{}( int short & );
-void	?{}( int short unsigned & );
-void	?{}( signed int & );
-void	?{}( unsigned int & );
-void	?{}( signed long int & );
-void	?{}( unsigned long int & );
-void	?{}( signed long long int & );
-void	?{}( unsigned long long int & );
-void	?{}( float & );
-void	?{}( double & );
-void	?{}( long double & );
-void	?{}( float _Complex & );
-void	?{}( double _Complex & );
-void	?{}( long double _Complex & );
-void	?{}( zero_t & );
-void	?{}( one_t & );
-
-// copy ctor
-void	?{}( _Bool &, _Bool );
-void	?{}( char &, char );
-void	?{}( unsigned char &, unsigned char );
-void	?{}( char signed &, char signed );
-void	?{}( int short &, int short );
-void	?{}( int short unsigned &, int short unsigned );
-void	?{}( signed int &, signed int);
-void	?{}( unsigned int &, unsigned int);
-void	?{}( signed long int &, signed long int);
-void	?{}( unsigned long int &, unsigned long int);
-void	?{}( signed long long int &, signed long long int);
-void	?{}( unsigned long long int &, unsigned long long int);
-void	?{}( float &, float);
-void	?{}( double &, double);
-void	?{}( long double &, long double);
-void	?{}( float _Complex &, float _Complex);
-void	?{}( double _Complex &, double _Complex);
-void	?{}( long double _Complex &, long double _Complex);
-void	?{}( zero_t &, zero_t );
-void	?{}( one_t &, one_t );
-
-// dtor
-void	^?{}( _Bool & );
-void	^?{}( char & );
-void	^?{}( char unsigned & );
-void	^?{}( char signed & );
-void	^?{}( int short & );
-void	^?{}( int short unsigned & );
-void	^?{}( signed int & );
-void	^?{}( unsigned int & );
-void	^?{}( signed long int & );
-void	^?{}( unsigned long int & );
-void	^?{}( signed long long int & );
-void	^?{}( unsigned long long int & );
-void	^?{}( float & );
-void	^?{}( double & );
-void	^?{}( long double & );
-void	^?{}( float _Complex & );
-void	^?{}( double _Complex & );
-void	^?{}( long double _Complex & );
-void	^?{}( zero_t & );
-void	^?{}( one_t & );
-
-// // default ctor
-// forall( dtype DT ) void	 ?{}(		     DT ** );
-// forall( dtype DT ) void	 ?{}( const	     DT ** );
-// forall( dtype DT ) void	 ?{}(	    volatile DT ** );
-// forall( dtype DT ) void	 ?{}( const volatile DT ** );
-
-// // copy ctor
-// forall( dtype DT ) void	 ?{}(		     DT **, DT* );
-// forall( dtype DT ) void	 ?{}( const	     DT **, DT* );
-// forall( dtype DT ) void	 ?{}(	    volatile DT **, DT* );
-// forall( dtype DT ) void	 ?{}( const volatile DT **, DT* );
-
-// // dtor
-// forall( dtype DT ) void	^?{}(		     DT ** );
-// forall( dtype DT ) void	^?{}( const	     DT ** );
-// forall( dtype DT ) void	^?{}(	    volatile DT ** );
-// forall( dtype DT ) void	^?{}( const volatile DT ** );
-
-// copied from assignment section
-// copy constructors
-forall( ftype FT ) void ?{}( FT *&, FT * );
-forall( ftype FT ) void ?{}( FT * volatile &, FT * );
-
-forall( dtype DT ) void ?{}(		     DT *	   &,			DT * );
-forall( dtype DT ) void ?{}( const	     DT *	   &,			DT * );
-forall( dtype DT ) void ?{}( const	     DT *	   &, const		DT * );
-forall( dtype DT ) void ?{}(	   volatile  DT *	   &,			DT * );
-forall( dtype DT ) void ?{}(	   volatile  DT *	   &,	    volatile	DT * );
-
-forall( dtype DT ) void ?{}( const volatile  DT *	   &,			DT * );
-forall( dtype DT ) void ?{}( const volatile  DT *	   &, const		DT * );
-forall( dtype DT ) void ?{}( const volatile  DT *	   &,	    volatile	DT * );
-forall( dtype DT ) void ?{}( const volatile  DT *	   &, const volatile	DT * );
-
-forall( dtype DT ) void ?{}(		     void *	     &,			DT * );
-forall( dtype DT ) void ?{}( const	     void *	     &,			DT * );
-forall( dtype DT ) void ?{}( const	     void *	     &, const		DT * );
-forall( dtype DT ) void ?{}(	    volatile void *	     &,			DT * );
-forall( dtype DT ) void ?{}(	    volatile void *	     &,	      volatile	DT * );
-forall( dtype DT ) void ?{}( const volatile void *	     &,			DT * );
-forall( dtype DT ) void ?{}( const volatile void *	     &, const		DT * );
-forall( dtype DT ) void ?{}( const volatile void *	     &,	      volatile	DT * );
-forall( dtype DT ) void ?{}( const volatile void *	     &, const volatile	DT * );
-
-//forall( dtype DT ) void ?{}(		    DT *	  &, zero_t );
-//forall( dtype DT ) void ?{}(		    DT * volatile &, zero_t );
-forall( dtype DT ) void ?{}( const	    DT *	  &, zero_t );
-//forall( dtype DT ) void ?{}( volatile	    DT *	  &, zero_t );
-//forall( dtype DT ) void ?{}( volatile	    DT * volatile &, zero_t );
-forall( dtype DT ) void ?{}( const volatile DT *	  &, zero_t );
-
-forall( ftype FT ) void	?{}( FT *	   &, zero_t );
-
-// default ctors
-forall( ftype FT ) void	?{}( FT *	   & );
-
-forall( dtype DT ) void	?{}(		     DT *	   &);
-forall( dtype DT ) void	?{}( const	     DT *	   &);
-forall( dtype DT ) void	?{}(	   volatile  DT *	   &);
-forall( dtype DT ) void ?{}( const volatile  DT *	   &);
-
-void 	?{}(		    void *	    &);
-void 	?{}( const	    void *	    &);
-void 	?{}(	   volatile void *	    &);
-void 	?{}( const volatile void *	    &);
-
-// dtors
-forall( ftype FT ) void	^?{}( FT *	   & );
-
-forall( dtype DT ) void	^?{}(		     DT *	   &);
-forall( dtype DT ) void	^?{}( const	     DT *	   &);
-forall( dtype DT ) void	^?{}(	   volatile  DT *	   &);
-forall( dtype DT ) void ^?{}( const volatile  DT *	   &);
-
-void ^?{}(		    void *	    &);
-void ^?{}( const	    void *	    &);
-void ^?{}(	   volatile void *	    &);
-void ^?{}( const   volatile void *	    &);
-
-// Local Variables: //
-// mode: c //
-// tab-width: 8 //
-// End: //
Index: src/prelude/prelude.old.cf
===================================================================
--- src/prelude/prelude.old.cf	(revision 6382128c8e7c065248691cdee4f1a20c35f38525)
+++ src/prelude/prelude.old.cf	(revision 6382128c8e7c065248691cdee4f1a20c35f38525)
@@ -0,0 +1,784 @@
+//
+// Copyright (C) Glen Ditchfield 1994, 1999
+//
+// prelude.cf -- Standard Cforall Preample for C99
+//
+// Author           : Glen Ditchfield
+// Created On       : Sat Nov 29 07:23:41 2014
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Sun Apr 22 13:21:47 2018
+// Update Count     : 103
+//
+
+# 2 "prelude.cf"  // needed for error messages from this file
+
+// Section numbers from: http://plg.uwaterloo.ca/~cforall/refrat.pdf
+
+// ------------------------------------------------------------
+//
+// Section 6.7.11 Trait Declarations
+// Note: the sized trait is used in declarations later in this
+// file, so it must be out of order.
+//
+// ------------------------------------------------------------
+
+trait sized(dtype T) {};
+
+// ------------------------------------------------------------
+//
+// Section 4.1 Primary Expressions
+//
+// ------------------------------------------------------------
+
+//We have none
+
+// ------------------------------------------------------------
+//
+// Section 4.2 Postfix Operators
+//
+// ------------------------------------------------------------
+
+signed short		?++( signed short & ),			?++( volatile signed short & );
+signed short		?--( signed short & ),			?--( volatile signed short & );
+unsigned short		?++( unsigned short & ),		?++( volatile unsigned short & );
+unsigned short		?--( unsigned short & ),		?--( volatile unsigned short & );
+signed int		?++( signed int & ),			?++( volatile signed int & );
+signed int		?--( signed int & ),			?--( volatile signed int & );
+unsigned int		?++( unsigned int & ),			?++( volatile unsigned int & );
+unsigned int		?--( unsigned int & ),			?--( volatile unsigned int & );
+signed long int		?++( signed long int & ),		?++( volatile signed long int & );
+signed long int		?--( signed long int & ),		?--( volatile signed long int & );
+unsigned long int	?++( unsigned long int & ),		?++( volatile unsigned long int & );
+unsigned long int	?--( unsigned long int & ),		?--( volatile unsigned long int & );
+signed long long int	?++( signed long long int & ),		?++( volatile signed long long int & );
+signed long long int	?--( signed long long int & ),		?--( volatile signed long long int & );
+unsigned long long int	?++( unsigned long long int & ),	?++( volatile unsigned long long int & );
+unsigned long long int	?--( unsigned long long int & ),	?--( volatile unsigned long long int & );
+float			?++( float & ),				?++( volatile float & );
+float			?--( float & ),				?--( volatile float & );
+double			?++( double & ),			?++( volatile double & );
+double			?--( double & ),			?--( volatile double & );
+long double		?++( long double & ),			?++( volatile long double & );
+long double		?--( long double & ),			?--( volatile long double & );
+float _Complex		?++( float _Complex & ),		?++( volatile float _Complex & );
+float _Complex		?--( float _Complex & ),		?--( volatile float _Complex & );
+double _Complex		?++( double _Complex & ),		?++( volatile double _Complex & );
+double _Complex		?--( double _Complex & ),		?--( volatile double _Complex & );
+long double _Complex	?++( long double _Complex & ),		?++( volatile long double _Complex & );
+long double _Complex	?--( long double _Complex & ),		?--( volatile long double _Complex & );
+
+forall( dtype T | sized(T) ) T *			 ?++(		     T *& );
+forall( dtype T | sized(T) ) const T *		 ?++( const	     T *& );
+forall( dtype T | sized(T) ) volatile T *		 ?++(	    volatile T *& );
+forall( dtype T | sized(T) ) const volatile T *	 ?++( const volatile T *& );
+forall( dtype T | sized(T) ) T *			 ?--(		     T *& );
+forall( dtype T | sized(T) ) const T *		 ?--( const	     T *& );
+forall( dtype T | sized(T) ) volatile T *		 ?--(	    volatile T *& );
+forall( dtype T | sized(T) ) const volatile T *	 ?--( const volatile T *& );
+
+forall( dtype T | sized(T) ) T &		 ?[?](		      T *,	    ptrdiff_t );
+forall( dtype T | sized(T) ) const T &	 ?[?]( const	      T *,	    ptrdiff_t );
+forall( dtype T | sized(T) ) volatile T &	 ?[?](       volatile T *,	    ptrdiff_t );
+forall( dtype T | sized(T) ) const volatile T & ?[?]( const volatile T *,	    ptrdiff_t );
+forall( dtype T | sized(T) ) T &		 ?[?](		ptrdiff_t,		  T * );
+forall( dtype T | sized(T) ) const T &	 ?[?](		ptrdiff_t, const	  T * );
+forall( dtype T | sized(T) ) volatile T &	 ?[?](		ptrdiff_t,	 volatile T * );
+forall( dtype T | sized(T) ) const volatile T & ?[?](		ptrdiff_t, const volatile T * );
+
+// ------------------------------------------------------------
+//
+// Section 4.3 Unary Operators
+//
+// ------------------------------------------------------------
+
+signed short	++?( signed short & ),			--?( signed short & );
+signed int		++?( signed int & ),			--?( signed int & );
+unsigned short		++?( unsigned int & ),			--?( unsigned int & );
+unsigned int		++?( unsigned short & ),		--?( unsigned short & );
+signed long int		++?( signed long int & ),		--?( signed long int & );
+unsigned long int	++?( unsigned long int & ),		--?( unsigned long int & );
+signed long long int	++?( signed long long int & ),		--?( signed long long int & );
+unsigned long long int	++?( unsigned long long int & ),	--?( unsigned long long int & );
+float			++?( float & ),				--?( float & );
+double			++?( double & ),			--?( double & );
+long double		++?( long double & ),			--?( long double & );
+float _Complex		++?( float _Complex & ),		--?( float _Complex & );
+double _Complex		++?( double _Complex & ),		--?( double _Complex & );
+long double _Complex	++?( long double _Complex & ),		--?( long double _Complex & );
+
+forall( dtype T | sized(T) ) T *			 ++?(		     T *& );
+forall( dtype T | sized(T) ) const T *		 ++?( const	     T *& );
+forall( dtype T | sized(T) ) volatile T *		 ++?(	    volatile T *& );
+forall( dtype T | sized(T) ) const volatile T *	 ++?( const volatile T *& );
+forall( dtype T | sized(T) ) T *			 --?(		     T *& );
+forall( dtype T | sized(T) ) const T *		 --?( const	     T *& );
+forall( dtype T | sized(T) ) volatile T *		 --?(	    volatile T *& );
+forall( dtype T | sized(T) ) const volatile T *	 --?( const volatile T *& );
+
+forall( dtype T | sized(T) ) T &		 *?(		     T * );
+forall( dtype T | sized(T) ) const T &		 *?( const	     T * );
+forall( dtype T | sized(T) ) volatile T &	 *?(       volatile  T * );
+forall( dtype T | sized(T) ) const volatile T & *?( const volatile  T * );
+forall( ftype FT ) FT &		 *?( FT * );
+
+_Bool			+?( _Bool ),			-?( _Bool );
+signed int		+?( signed int ),		-?( signed int ),		~?( signed int );
+unsigned int		+?( unsigned int ),		-?( unsigned int ),		~?( unsigned int );
+signed long int		+?( signed long int ),		-?( signed long int ),		~?( signed long int );
+unsigned long int	+?( unsigned long int ),	-?( unsigned long int ),	~?( unsigned long int );
+signed long long int	+?( signed long long int ),	-?( signed long long int ),	~?( signed long long int );
+unsigned long long int	+?( unsigned long long int ),	-?( unsigned long long int ),	~?( unsigned long long int );
+float			+?( float ),			-?( float );
+double			+?( double ),			-?( double );
+long double		+?( long double ),		-?( long double );
+float _Complex		+?( float _Complex ),		-?( float _Complex );
+double _Complex		+?( double _Complex ),		-?( double _Complex );
+long double _Complex	+?( long double _Complex ),	-?( long double _Complex );
+
+signed int	!?( signed int ),		!?( unsigned int ),
+		!?( long int ),			!?( unsigned long int ),
+		!?( long long int ),		!?( unsigned long long int ),
+		!?( float ),			!?( double ),			!?( long double ),
+		!?( float _Complex ),		!?( double _Complex ),		!?( long double _Complex );
+
+forall( dtype DT ) int !?(                DT * );
+forall( dtype DT ) int !?( const          DT * );
+forall( dtype DT ) int !?(       volatile DT * );
+forall( dtype DT ) int !?( const volatile DT * );
+forall( ftype FT ) int !?( FT * );
+
+// ------------------------------------------------------------
+//
+// Section 4.5 Multiplicative Operators
+//
+// ------------------------------------------------------------
+
+signed int		?*?( signed int, signed int ),				?/?( signed int, signed int ),			?%?( signed int, signed int );
+unsigned int		?*?( unsigned int, unsigned int ),			?/?( unsigned int, unsigned int ),		?%?( unsigned int, unsigned int );
+signed long int		?*?( signed long int, signed long int ),		?/?( signed long int, signed long int ),	?%?( signed long int, signed long int );
+unsigned long int	?*?( unsigned long int, unsigned long int ),		?/?( unsigned long int, unsigned long int ),	?%?( unsigned long int, unsigned long int );
+signed long long int	?*?( signed long long int, signed long long int ),	?/?( signed long long int, signed long long int ), ?%?( signed long long int, signed long long int );
+unsigned long long int	?*?( unsigned long long int, unsigned long long int ),	?/?( unsigned long long int, unsigned long long int ), ?%?( unsigned long long int, unsigned long long int );
+float			?*?( float, float ),					?/?( float, float );
+double			?*?( double, double ),					?/?( double, double );
+long double		?*?( long double, long double ),			?/?( long double, long double );
+// gcc does not support _Imaginary
+//float _Imaginary	?*?( float _Imaginary, float _Imaginary),		?/?( float _Imaginary, float _Imaginary );
+//double _Imaginary	?*?( double _Imaginary, double _Imaginary),		?/?( double _Imaginary, double _Imaginary );
+//long double _Imaginary	?*?( long double _Imaginary, long double _Imaginary),	?/?( long double _Imaginary, long double _Imaginary );
+float _Complex		?*?( float _Complex, float _Complex ),			?/?( float _Complex, float _Complex );
+double _Complex		?*?( double _Complex, double _Complex ),		?/?( double _Complex, double _Complex );
+long double _Complex	?*?( long double _Complex, long double _Complex ),	?/?( long double _Complex, long double _Complex );
+
+// ------------------------------------------------------------
+//
+// Section 4.6 Additive Operators
+//
+// ------------------------------------------------------------
+
+_Bool			?+?( _Bool, _Bool ),					?-?( _Bool, _Bool );
+signed int		?+?( signed int, signed int ),				?-?( signed int, signed int );
+unsigned int		?+?( unsigned int, unsigned int ),			?-?( unsigned int, unsigned int );
+signed long int		?+?( signed long int, signed long int ),		?-?( signed long int, signed long int );
+unsigned long int	?+?( unsigned long int, unsigned long int ),		?-?( unsigned long int, unsigned long int );
+signed long long int	?+?( signed long long int, long long int  signed),	?-?( signed long long int, signed long long int );
+unsigned long long int	?+?( unsigned long long int, unsigned long long int ),	?-?( unsigned long long int, unsigned long long int );
+float			?+?( float, float ),					?-?( float, float );
+double			?+?( double, double ),					?-?( double, double );
+long double		?+?( long double, long double ),			?-?( long double, long double );
+float _Complex		?+?( float _Complex, float _Complex ),			?-?( float _Complex, float _Complex );
+double _Complex		?+?( double _Complex, double _Complex ),		?-?( double _Complex, double _Complex );
+long double _Complex	?+?( long double _Complex, long double _Complex ),	?-?( long double _Complex, long double _Complex );
+
+forall( dtype T | sized(T) ) T *		?+?(		    T *,	  ptrdiff_t );
+forall( dtype T | sized(T) ) T *		?+?(	      ptrdiff_t,		T * );
+forall( dtype T | sized(T) ) const T *		?+?( const	    T *,	  ptrdiff_t );
+forall( dtype T | sized(T) ) const T *		?+?(	      ptrdiff_t, const		T * );
+forall( dtype T | sized(T) ) volatile T *	?+?(	   volatile T *,	  ptrdiff_t );
+forall( dtype T | sized(T) ) volatile T *	?+?(	      ptrdiff_t,       volatile T * );
+forall( dtype T | sized(T) ) const volatile T *	?+?( const volatile T *,	  ptrdiff_t );
+forall( dtype T | sized(T) ) const volatile T *	?+?(	      ptrdiff_t, const volatile T * );
+forall( dtype T | sized(T) ) T *		?-?(		    T *,	  ptrdiff_t );
+forall( dtype T | sized(T) ) const T *		?-?( const	    T *,	  ptrdiff_t );
+forall( dtype T | sized(T) ) volatile T *	?-?(	   volatile T *,	  ptrdiff_t );
+forall( dtype T | sized(T) ) const volatile T *	?-?( const volatile T *,	  ptrdiff_t );
+forall( dtype T | sized(T) ) ptrdiff_t		?-?( const volatile T *, const volatile T * );
+
+// ------------------------------------------------------------
+//
+// Section 4.7 Bitwise Shift Operators
+//
+// ------------------------------------------------------------
+
+signed int		?<<?( signed int, signed int ),				?>>?( signed int, signed int );
+unsigned int		?<<?( unsigned int, unsigned int ),			?>>?( unsigned int, unsigned int );
+signed long int		?<<?( signed long int, signed long int ),		?>>?( signed long int, signed long int );
+unsigned long int	?<<?( unsigned long int, unsigned long int ),		?>>?( unsigned long int, unsigned long int );
+signed long long int	?<<?( signed long long int, signed long long int ),	?>>?( signed long long int, signed long long int );
+unsigned long long int	?<<?( unsigned long long int, unsigned long long int ),	?>>?( unsigned long long int, unsigned long long int );
+
+// ------------------------------------------------------------
+//
+// Section 4.8 Relational Operators
+//
+// ------------------------------------------------------------
+
+signed int ?<?( _Bool, _Bool ),						?<=?( _Bool, _Bool ),
+	   ?>?( _Bool, _Bool ),						?>=?( _Bool, _Bool );
+signed int ?<?( char, char ),						?<=?( char, char ),
+	   ?>?( char, char ),						?>=?( char, char );
+signed int ?<?( signed char, signed char ),				?<=?( signed char, signed char ),
+	   ?>?( signed char, signed char ),				?>=?( signed char, signed char );
+signed int ?<?( unsigned char, unsigned char ),				?<=?( unsigned char, unsigned char ),
+	   ?>?( unsigned char, unsigned char ),				?>=?( unsigned char, unsigned char );
+signed int ?<?( signed short, signed short ),				?<=?( signed short, signed short ),
+	   ?>?( signed short, signed short ),				?>=?( signed short, signed short );
+signed int ?<?( unsigned short, unsigned short ),			?<=?( unsigned short, unsigned short ),
+	   ?>?( unsigned short, unsigned short ),			?>=?( unsigned short, unsigned short );
+signed int ?<?( signed int, signed int ),				?<=?( signed int, signed int ),
+	   ?>?( signed int, signed int ),				?>=?( signed int, signed int );
+signed int ?<?( unsigned int, unsigned int ),				?<=?( unsigned int, unsigned int ),
+	   ?>?( unsigned int, unsigned int ),				?>=?( unsigned int, unsigned int );
+signed int ?<?( signed long int, signed long int ),			?<=?( signed long int, signed long int ),
+	   ?>?( signed long int, signed long int ),			?>=?( signed long int, signed long int );
+signed int ?<?( unsigned long int, unsigned long int ),			?<=?( unsigned long int, unsigned long int ),
+	   ?>?( unsigned long int, unsigned long int ),			?>=?( unsigned long int, unsigned long int );
+signed int ?<?( signed long long int, signed long long int ),		?<=?( signed long long int, signed long long int ),
+	   ?>?( signed long long int, signed long long int ),		?>=?( signed long long int, signed long long int );
+signed int ?<?( unsigned long long int, unsigned long long int ),	?<=?( unsigned long long int, unsigned long long int ),
+	   ?>?( unsigned long long int, unsigned long long int ),	?>=?( unsigned long long int, unsigned long long int );
+signed int ?<?( float, float ),						?<=?( float, float ),
+	   ?>?( float, float ),						?>=?( float, float );
+signed int ?<?( double, double ),					?<=?( double, double ),
+	   ?>?( double, double ),					?>=?( double, double );
+signed int ?<?( long double, long double ),				?<=?( long double, long double ),
+	   ?>?( long double, long double ),				?>=?( long double, long double );
+
+forall( dtype DT ) signed int ?<?(                 DT *,                DT * );
+forall( dtype DT ) signed int ?<?(  const          DT *, const          DT * );
+forall( dtype DT ) signed int ?<?(        volatile DT *,       volatile DT * );
+forall( dtype DT ) signed int ?<?(  const volatile DT *, const volatile DT * );
+
+forall( dtype DT ) signed int ?>?(                 DT *,                DT * );
+forall( dtype DT ) signed int ?>?(  const          DT *, const          DT * );
+forall( dtype DT ) signed int ?>?(        volatile DT *,       volatile DT * );
+forall( dtype DT ) signed int ?>?(  const volatile DT *, const volatile DT * );
+
+forall( dtype DT ) signed int ?<=?(                 DT *,                DT * );
+forall( dtype DT ) signed int ?<=?(  const          DT *, const          DT * );
+forall( dtype DT ) signed int ?<=?(        volatile DT *,       volatile DT * );
+forall( dtype DT ) signed int ?<=?( const volatile DT *, const volatile DT * );
+
+forall( dtype DT ) signed int ?>=?(                 DT *,                DT * );
+forall( dtype DT ) signed int ?>=?(  const          DT *, const          DT * );
+forall( dtype DT ) signed int ?>=?(        volatile DT *,       volatile DT * );
+forall( dtype DT ) signed int ?>=?( const volatile DT *, const volatile DT * );
+
+// ------------------------------------------------------------
+//
+// Section 4.9 Equality Operators
+//
+// ------------------------------------------------------------
+
+signed int ?==?( _Bool, _Bool ),							?!=?( _Bool, _Bool );
+signed int ?==?( char, char ),								?!=?( char, char );
+signed int ?==?( signed char, signed char ),				?!=?( signed char, signed char );
+signed int ?==?( unsigned char, unsigned char ),			?!=?( unsigned char, unsigned char );
+signed int ?==?( signed short, signed short ),				?!=?( signed short, signed short );
+signed int ?==?( unsigned short, unsigned short ),			?!=?( unsigned short, unsigned short );
+signed int ?==?( signed int, signed int ),					?!=?( signed int, signed int );
+signed int ?==?( unsigned int, unsigned int ),					?!=?( unsigned int, unsigned int );
+signed int ?==?( signed long int, signed long int ),				?!=?( signed long int, signed long int );
+signed int ?==?( unsigned long int, unsigned long int ),			?!=?( unsigned long int, unsigned long int );
+signed int ?==?( signed long long int, long long int  signed),		?!=?( signed long long int, signed long long int );
+signed int ?==?( unsigned long long int, unsigned long long int ),	?!=?( unsigned long long int, unsigned long long int );
+signed int ?==?( float, float ),							?!=?( float, float );
+signed int ?==?( double, double ),							?!=?( double, double );
+signed int ?==?( long double, long double ),					?!=?( long double, long double );
+signed int ?==?( float _Complex, float _Complex ),				?!=?( float _Complex, float _Complex );
+signed int ?==?( double _Complex, double _Complex ),				?!=?( double _Complex, double _Complex );
+signed int ?==?( long double _Complex, long double _Complex ),		?!=?( long double _Complex, long double _Complex );
+signed int ?==?( zero_t, zero_t ),							?!=?( zero_t, zero_t );
+signed int ?==?( one_t, one_t ),							?!=?( one_t, one_t );
+
+forall( dtype DT ) signed int ?==?(		   DT *,		DT * );
+forall( dtype DT ) signed int ?==?( const	   DT *, const		DT * );
+forall( dtype DT ) signed int ?==?(       volatile DT *,       volatile DT * );
+forall( dtype DT ) signed int ?==?( const volatile DT *, const volatile DT * );
+forall( ftype FT ) signed int ?==?( FT *, FT * );
+forall( dtype DT ) signed int ?!=?(		   DT *,		DT * );
+forall( dtype DT ) signed int ?!=?( const	   DT *, const		DT * );
+forall( dtype DT ) signed int ?!=?(       volatile DT *,       volatile DT * );
+forall( dtype DT ) signed int ?!=?( const volatile DT *, const volatile DT * );
+forall( ftype FT ) signed int ?!=?( FT *, FT * );
+
+// forall( dtype DT ) signed int ?==?( const volatile DT   *, const volatile void * );
+// forall( dtype DT ) signed int ?==?( const volatile void *, const volatile DT * );
+// forall( dtype DT ) signed int ?!=?( const volatile DT   *, const volatile void * );
+// forall( dtype DT ) signed int ?!=?( const volatile void *, const volatile DT * );
+
+// forall( dtype DT ) signed int ?==?( const volatile DT *, zero_t );
+// forall( dtype DT ) signed int ?==?( zero_t, const volatile DT * );
+// forall( ftype FT ) signed int ?==?( FT *, zero_t );
+// forall( ftype FT ) signed int ?==?( zero_t, FT * );
+// forall( dtype DT ) signed int ?!=?( const volatile DT *, zero_t );
+// forall( dtype DT ) signed int ?!=?( zero_t, const volatile DT * );
+// forall( ftype FT ) signed int ?!=?( FT *, zero_t );
+// forall( ftype FT ) signed int ?!=?( zero_t, FT * );
+
+// ------------------------------------------------------------
+//
+// Section 4.10 Bitwise AND Operators
+//
+// ------------------------------------------------------------
+
+_Bool			?&?( _Bool, _Bool );
+signed int		?&?( signed int, signed int );
+unsigned int		?&?( unsigned int, unsigned int );
+signed long int		?&?( signed long int, signed long int );
+unsigned long int	?&?( unsigned long int, unsigned long int );
+signed long long int	?&?( signed long long int, signed long long int );
+unsigned long long int	?&?( unsigned long long int, unsigned long long int );
+
+// ------------------------------------------------------------
+//
+// Section 4.11 Bitwise XOR Operators
+//
+// ------------------------------------------------------------
+
+_Bool			?^?( _Bool, _Bool );
+signed int		?^?( signed int, signed int );
+unsigned int		?^?( unsigned int, unsigned int );
+signed long int		?^?( signed long int, signed long int );
+unsigned long int	?^?( unsigned long int, unsigned long int );
+signed long long int	?^?( signed long long int, signed long long int );
+unsigned long long int	?^?( unsigned long long int, unsigned long long int );
+
+// ------------------------------------------------------------
+//
+// Section 4.12 Bitwise OR Operators
+//
+// ------------------------------------------------------------
+
+_Bool			?|?( _Bool, _Bool );
+signed int		?|?( signed int, signed int );
+unsigned int		?|?( unsigned int, unsigned int );
+signed long int		?|?( signed long int, signed long int );
+unsigned long int	?|?( unsigned long int, unsigned long int );
+signed long long int	?|?( signed long long int, signed long long int );
+unsigned long long int	?|?( unsigned long long int, unsigned long long int );
+
+// ------------------------------------------------------------
+//
+// Section 4.16 Assignment Operator
+//
+// ------------------------------------------------------------
+
+forall( ftype FT ) FT *			?=?( FT *&, FT * );
+forall( ftype FT ) FT *			?=?( FT * volatile &, FT * );
+
+forall( dtype DT ) DT *			?=?(		     DT *	   &,			DT * );
+forall( dtype DT ) DT *			?=?(		     DT * volatile &,			DT * );
+forall( dtype DT ) const DT *		?=?( const	     DT *	   &,			DT * );
+forall( dtype DT ) const DT *		?=?( const	     DT * volatile &,			DT * );
+forall( dtype DT ) const DT *		?=?( const	     DT *	   &, const		DT * );
+forall( dtype DT ) const DT *		?=?( const	     DT * volatile &, const		DT * );
+forall( dtype DT ) volatile DT *	?=?(	   volatile  DT *	   &,			DT * );
+forall( dtype DT ) volatile DT *	?=?(	   volatile  DT * volatile &,			DT * );
+forall( dtype DT ) volatile DT *	?=?(	   volatile  DT *	   &,	    volatile	DT * );
+forall( dtype DT ) volatile DT *	?=?(	   volatile  DT * volatile &,	    volatile	DT * );
+
+forall( dtype DT ) const volatile DT *	?=?( const volatile  DT *	   &,			DT * );
+forall( dtype DT ) const volatile DT *  ?=?( const volatile  DT * volatile &,			DT * );
+forall( dtype DT ) const volatile DT *  ?=?( const volatile  DT *	   &, const		DT * );
+forall( dtype DT ) const volatile DT *  ?=?( const volatile  DT * volatile &, const		DT * );
+forall( dtype DT ) const volatile DT *  ?=?( const volatile  DT *	   &,	    volatile	DT * );
+forall( dtype DT ) const volatile DT *  ?=?( const volatile  DT * volatile &,	    volatile	DT * );
+forall( dtype DT ) const volatile DT *  ?=?( const volatile  DT *	   &, const volatile	DT * );
+forall( dtype DT ) const volatile DT *  ?=?( const volatile  DT * volatile &, const volatile	DT * );
+
+forall( dtype DT ) void *		 ?=?(		     void *	     &,			DT * );
+forall( dtype DT ) void *		 ?=?(		     void * volatile &,			DT * );
+forall( dtype DT ) const void *		 ?=?( const	     void *	     &,			DT * );
+forall( dtype DT ) const void *		 ?=?( const	     void * volatile &,			DT * );
+forall( dtype DT ) const void *		 ?=?( const	     void *	     &, const		DT * );
+forall( dtype DT ) const void *		 ?=?( const	     void * volatile &, const		DT * );
+forall( dtype DT ) volatile void *	 ?=?(	    volatile void *	     &,			DT * );
+forall( dtype DT ) volatile void *	 ?=?(	    volatile void * volatile &,			DT * );
+forall( dtype DT ) volatile void *	 ?=?(	    volatile void *	     &,	      volatile	DT * );
+forall( dtype DT ) volatile void *	 ?=?(	    volatile void * volatile &,	      volatile	DT * );
+forall( dtype DT ) const volatile void * ?=?( const volatile void *	     &,			DT * );
+forall( dtype DT ) const volatile void * ?=?( const volatile void * volatile &,			DT * );
+forall( dtype DT ) const volatile void * ?=?( const volatile void *	     &, const		DT * );
+forall( dtype DT ) const volatile void * ?=?( const volatile void * volatile &, const		DT * );
+forall( dtype DT ) const volatile void * ?=?( const volatile void *	     &,	      volatile	DT * );
+forall( dtype DT ) const volatile void * ?=?( const volatile void * volatile &,	      volatile	DT * );
+forall( dtype DT ) const volatile void * ?=?( const volatile void *	     &, const volatile	DT * );
+forall( dtype DT ) const volatile void * ?=?( const volatile void * volatile &, const volatile	DT * );
+
+//forall( dtype DT ) DT *			?=?(		    DT *	  &, zero_t );
+//forall( dtype DT ) DT *			?=?(		    DT * volatile &, zero_t );
+forall( dtype DT ) const DT *		?=?( const	    DT *	  &, zero_t );
+forall( dtype DT ) const DT *		?=?( const	    DT * volatile &, zero_t );
+//forall( dtype DT ) volatile DT *	?=?( volatile	    DT *	  &, zero_t );
+//forall( dtype DT ) volatile DT *	?=?( volatile	    DT * volatile &, zero_t );
+forall( dtype DT ) const volatile DT *	?=?( const volatile DT *	  &, zero_t );
+forall( dtype DT ) const volatile DT *	?=?( const volatile DT * volatile &, zero_t );
+
+forall( ftype FT ) FT *			?=?( FT *	   &, zero_t );
+forall( ftype FT ) FT *			?=?( FT * volatile &, zero_t );
+
+forall( dtype T | sized(T) ) T *		?+=?(		     T *	  &, ptrdiff_t );
+forall( dtype T | sized(T) ) T *		?+=?(		     T * volatile &, ptrdiff_t );
+forall( dtype T | sized(T) ) const T *		?+=?( const	     T *	  &, ptrdiff_t );
+forall( dtype T | sized(T) ) const T *		?+=?( const	     T * volatile &, ptrdiff_t );
+forall( dtype T | sized(T) ) volatile T *	?+=?(	    volatile T *	  &, ptrdiff_t );
+forall( dtype T | sized(T) ) volatile T *	?+=?(	    volatile T * volatile &, ptrdiff_t );
+forall( dtype T | sized(T) ) const volatile T *	?+=?( const volatile T *	  &, ptrdiff_t );
+forall( dtype T | sized(T) ) const volatile T *	?+=?( const volatile T * volatile &, ptrdiff_t );
+forall( dtype T | sized(T) ) T *		?-=?(		     T *	  &, ptrdiff_t );
+forall( dtype T | sized(T) ) T *		?-=?(		     T * volatile &, ptrdiff_t );
+forall( dtype T | sized(T) ) const T *		?-=?( const	     T *	  &, ptrdiff_t );
+forall( dtype T | sized(T) ) const T *		?-=?( const	     T * volatile &, ptrdiff_t );
+forall( dtype T | sized(T) ) volatile T *	?-=?(	    volatile T *	  &, ptrdiff_t );
+forall( dtype T | sized(T) ) volatile T *	?-=?(	    volatile T * volatile &, ptrdiff_t );
+forall( dtype T | sized(T) ) const volatile T *	?-=?( const volatile T *	  &, ptrdiff_t );
+forall( dtype T | sized(T) ) const volatile T *	?-=?( const volatile T * volatile &, ptrdiff_t );
+
+_Bool			?=?( _Bool &, _Bool ),					?=?( volatile _Bool &, _Bool );
+char			?=?( char &, char ),					?=?( volatile char &, char );
+char signed		?=?( char signed &, char signed ),			?=?( volatile char signed &, char signed );
+char unsigned		?=?( char unsigned &, char unsigned ),			?=?( volatile char unsigned &, char unsigned );
+int short		?=?( int short &, int short ),				?=?( volatile int short &, int short );
+int short unsigned	?=?( int short unsigned &, int short unsigned ),	?=?( volatile int short unsigned &, int short unsigned );
+signed int		?=?( signed int &, signed int ),			?=?( volatile signed int &, signed int );
+unsigned int		?=?( unsigned &, unsigned ),				?=?( volatile unsigned &, unsigned );
+signed long int		?=?( signed long int &, signed long int ),		?=?( volatile signed long int &, signed long int );
+unsigned long int	?=?( unsigned long int &, unsigned long int ),		?=?( volatile unsigned long int &, unsigned long int );
+signed long long int	?=?( signed long long int &, signed long long int ),	?=?( volatile signed long long int &, signed long long int );
+unsigned long long int	?=?( unsigned long long int &, unsigned long long int ), ?=?( volatile unsigned long long int &, unsigned long long int );
+zero_t			?=?( zero_t &, zero_t );
+one_t			?=?( one_t &, one_t );
+
+
+char			?*=?( char &, char ),					?*=?( volatile char &, char );
+char signed		?*=?( char signed &, char signed ),			?*=?( volatile char signed &, char signed );
+char unsigned		?*=?( char unsigned &, char unsigned ),			?*=?( volatile char unsigned &, char unsigned );
+int short		?*=?( int short &, int short ),				?*=?( volatile int short &, int short );
+int short unsigned	?*=?( int short unsigned &, int short unsigned ),	?*=?( volatile int short unsigned &, int short unsigned );
+signed int		?*=?( signed int &, signed int ),			?*=?( volatile signed int &, signed int );
+unsigned int		?*=?( unsigned &, unsigned ),				?*=?( volatile unsigned &, unsigned );
+signed long int		?*=?( signed long int &, signed long int ),		?*=?( volatile signed long int &, signed long int );
+unsigned long int	?*=?( unsigned long int &, unsigned long int ),		?*=?( volatile unsigned long int &, unsigned long int );
+signed long long int	?*=?( signed long long int &, signed long long int ),	?*=?( volatile signed long long int &, signed long long int );
+unsigned long long int	?*=?( unsigned long long int &, unsigned long long int ), ?*=?( volatile unsigned long long int &, unsigned long long int );
+
+_Bool			?/=?( _Bool &, _Bool ),					?/=?( volatile _Bool &, _Bool );
+char			?/=?( char &, char ),					?/=?( volatile char &, char );
+char signed		?/=?( char signed &, char signed ),			?/=?( volatile char signed &, char signed );
+char unsigned		?/=?( char unsigned &, char unsigned ),			?/=?( volatile char unsigned &, char unsigned );
+int short		?/=?( int short &, int short ),				?/=?( volatile int short &, int short );
+int short unsigned	?/=?( int short unsigned &, int short unsigned ),	?/=?( volatile int short unsigned &, int short unsigned );
+signed int		?/=?( signed int &, signed int ),			?/=?( volatile signed int &, signed int );
+unsigned int		?/=?( unsigned &, unsigned ),				?/=?( volatile unsigned &, unsigned );
+signed long int		?/=?( signed long int &, signed long int ),		?/=?( volatile signed long int &, signed long int );
+unsigned long int	?/=?( unsigned long int &, unsigned long int ),		?/=?( volatile unsigned long int &, unsigned long int );
+signed long long int	?/=?( signed long long int &, signed long long int ),	?/=?( volatile signed long long int &, signed long long int );
+unsigned long long int	?/=?( unsigned long long int &, unsigned long long int ), ?/=?( volatile unsigned long long int &, unsigned long long int );
+
+_Bool			?%=?( _Bool &, _Bool ),					?%=?( volatile _Bool &, _Bool );
+char			?%=?( char &, char ),					?%=?( volatile char &, char );
+char signed		?%=?( char signed &, char signed ),			?%=?( volatile char signed &, char signed );
+char unsigned		?%=?( char unsigned &, char unsigned ),			?%=?( volatile char unsigned &, char unsigned );
+int short		?%=?( int short &, int short ),				?%=?( volatile int short &, int short );
+int short unsigned	?%=?( int short unsigned &, int short unsigned ),	?%=?( volatile int short unsigned &, int short unsigned );
+signed int		?%=?( signed int &, signed int ),			?%=?( volatile signed int &, signed int );
+unsigned int		?%=?( unsigned &, unsigned ),				?%=?( volatile unsigned &, unsigned );
+signed long int		?%=?( signed long int &, signed long int ),		?%=?( volatile signed long int &, signed long int );
+unsigned long int	?%=?( unsigned long int &, unsigned long int ),		?%=?( volatile unsigned long int &, unsigned long int );
+signed long long int	?%=?( signed long long int &, signed long long int ),	?%=?( volatile signed long long int &, signed long long int );
+unsigned long long int	?%=?( unsigned long long int &, unsigned long long int ), ?%=?( volatile unsigned long long int &, unsigned long long int );
+
+_Bool			?+=?( _Bool &, _Bool ),					?+=?( volatile _Bool &, _Bool );
+char			?+=?( char &, char ),					?+=?( volatile char &, char );
+char signed		?+=?( char signed &, char signed ),			?+=?( volatile char signed &, char signed );
+char unsigned		?+=?( char unsigned &, char unsigned ),			?+=?( volatile char unsigned &, char unsigned );
+int short		?+=?( int short &, int short ),				?+=?( volatile int short &, int short );
+int short unsigned	?+=?( int short unsigned &, int short unsigned ),	?+=?( volatile int short unsigned &, int short unsigned );
+signed int		?+=?( signed int &, signed int ),			?+=?( volatile signed int &, signed int );
+unsigned int		?+=?( unsigned &, unsigned ),				?+=?( volatile unsigned &, unsigned );
+signed long int		?+=?( signed long int &, signed long int ),		?+=?( volatile signed long int &, signed long int );
+unsigned long int	?+=?( unsigned long int &, unsigned long int ),		?+=?( volatile unsigned long int &, unsigned long int );
+signed long long int	?+=?( signed long long int &, signed long long int ),	?+=?( volatile signed long long int &, signed long long int );
+unsigned long long int	?+=?( unsigned long long int &, unsigned long long int ), ?+=?( volatile unsigned long long int &, unsigned long long int );
+//signed int128		?+=?( signed int128 &, signed int128 ),			?+=?( volatile signed int128 &, signed int128 );
+//unsigned int128		?+=?( unsigned int128 &, unsigned int128 ),		?+=?( volatile unsigned int128 &, unsigned int128 );
+
+_Bool			?-=?( _Bool &, _Bool ),					?-=?( volatile _Bool &, _Bool );
+char			?-=?( char &, char ),					?-=?( volatile char &, char );
+char signed		?-=?( char signed &, char signed ),			?-=?( volatile char signed &, char signed );
+char unsigned		?-=?( char unsigned &, char unsigned ),			?-=?( volatile char unsigned &, char unsigned );
+int short		?-=?( int short &, int short ),				?-=?( volatile int short &, int short );
+int short unsigned	?-=?( int short unsigned &, int short unsigned ),	?-=?( volatile int short unsigned &, int short unsigned );
+signed int		?-=?( signed int &, signed int ),			?-=?( volatile signed int &, signed int );
+unsigned int		?-=?( unsigned &, unsigned ),				?-=?( volatile unsigned &, unsigned );
+signed long int		?-=?( signed long int &, signed long int ),		?-=?( volatile signed long int &, signed long int );
+unsigned long int	?-=?( unsigned long int &, unsigned long int ),		?-=?( volatile unsigned long int &, unsigned long int );
+signed long long int	?-=?( signed long long int &, signed long long int ),	?-=?( volatile signed long long int &, signed long long int );
+unsigned long long int	?-=?( unsigned long long int &, unsigned long long int ), ?-=?( volatile unsigned long long int &, unsigned long long int );
+
+char			?<<=?( char &, char ),					?<<=?( volatile char &, char );
+char signed		?<<=?( char signed &, char signed ),			?<<=?( volatile char signed &, char signed );
+char unsigned		?<<=?( char unsigned &, char unsigned ),		?<<=?( volatile char unsigned &, char unsigned );
+int short		?<<=?( int short &, int short ),			?<<=?( volatile int short &, int short );
+int short unsigned	?<<=?( int short unsigned &, int short unsigned ),	?<<=?( volatile int short unsigned &, int short unsigned );
+signed int		?<<=?( signed int &, signed int ),			?<<=?( volatile signed int &, signed int );
+unsigned int		?<<=?( unsigned &, unsigned ),				?<<=?( volatile unsigned &, unsigned );
+signed long int		?<<=?( signed long int &, signed long int ),		?<<=?( volatile signed long int &, signed long int );
+unsigned long int	?<<=?( unsigned long int &, unsigned long int ),	?<<=?( volatile unsigned long int &, unsigned long int );
+signed long long int	?<<=?( signed long long int &, signed long long int ),	?<<=?( volatile signed long long int &, signed long long int );
+unsigned long long int	?<<=?( unsigned long long int &, unsigned long long int ), ?<<=?( volatile unsigned long long int &, unsigned long long int );
+
+char			?>>=?( char &, char ),					?>>=?( volatile char &, char );
+char signed		?>>=?( char signed &, char signed ),			?>>=?( volatile char signed &, char signed );
+char unsigned		?>>=?( char unsigned &, char unsigned ),		?>>=?( volatile char unsigned &, char unsigned );
+int short		?>>=?( int short &, int short ),			?>>=?( volatile int short &, int short );
+int short unsigned	?>>=?( int short unsigned &, int short unsigned ),	?>>=?( volatile int short unsigned &, int short unsigned );
+signed int		?>>=?( signed int &, signed int ),			?>>=?( volatile signed int &, signed int );
+unsigned int		?>>=?( unsigned &, unsigned ),				?>>=?( volatile unsigned &, unsigned );
+signed long int		?>>=?( signed long int &, signed long int ),		?>>=?( volatile signed long int &, signed long int );
+unsigned long int	?>>=?( unsigned long int &, unsigned long int ),	?>>=?( volatile unsigned long int &, unsigned long int );
+signed long long int	?>>=?( signed long long int &, signed long long int ),	?>>=?( volatile signed long long int &, signed long long int );
+unsigned long long int	?>>=?( unsigned long long int &, unsigned long long int ), ?>>=?( volatile unsigned long long int &, unsigned long long int );
+
+_Bool			?&=?( _Bool &, _Bool ),					?&=?( volatile _Bool &, _Bool );
+char			?&=?( char &, char ),					?&=?( volatile char &, char );
+char signed		?&=?( char signed &, char signed ),			?&=?( volatile char signed &, char signed );
+char unsigned		?&=?( char unsigned &, char unsigned ),			?&=?( volatile char unsigned &, char unsigned );
+int short		?&=?( int short &, int short ),				?&=?( volatile int short &, int short );
+int short unsigned	?&=?( int short unsigned &, int short unsigned ),	?&=?( volatile int short unsigned &, int short unsigned );
+signed int		?&=?( signed int &, signed int ),			?&=?( volatile signed int &, signed int );
+unsigned int		?&=?( unsigned &, unsigned ),				?&=?( volatile unsigned &, unsigned );
+signed long int		?&=?( signed long int &, signed long int ),		?&=?( volatile signed long int &, signed long int );
+unsigned long int	?&=?( unsigned long int &, unsigned long int ),		?&=?( volatile unsigned long int &, unsigned long int );
+signed long long int	?&=?( signed long long int &, signed long long int ),	?&=?( volatile signed long long int &, signed long long int );
+unsigned long long int	?&=?( unsigned long long int &, unsigned long long int ), ?&=?( volatile unsigned long long int &, unsigned long long int );
+
+_Bool			?|=?( _Bool &, _Bool ),					?|=?( volatile _Bool &, _Bool );
+char			?|=?( char &, char ),					?|=?( volatile char &, char );
+char signed		?|=?( char signed &, char signed ),			?|=?( volatile char signed &, char signed );
+char unsigned		?|=?( char unsigned &, char unsigned ),			?|=?( volatile char unsigned &, char unsigned );
+int short		?|=?( int short &, int short ),				?|=?( volatile int short &, int short );
+int short unsigned	?|=?( int short unsigned &, int short unsigned ),	?|=?( volatile int short unsigned &, int short unsigned );
+signed int		?|=?( signed int &, signed int ),			?|=?( volatile signed int &, signed int );
+unsigned int		?|=?( unsigned &, unsigned ),				?|=?( volatile unsigned &, unsigned );
+signed long int		?|=?( signed long int &, signed long int ),		?|=?( volatile signed long int &, signed long int );
+unsigned long int	?|=?( unsigned long int &, unsigned long int ),		?|=?( volatile unsigned long int &, unsigned long int );
+signed long long int	?|=?( signed long long int &, signed long long int ),	?|=?( volatile signed long long int &, signed long long int );
+unsigned long long int	?|=?( unsigned long long int &, unsigned long long int ), ?|=?( volatile unsigned long long int &, unsigned long long int );
+
+_Bool			?^=?( _Bool &, _Bool ),					?^=?( volatile _Bool &, _Bool );
+char			?^=?( char &, char ),					?^=?( volatile char &, char );
+char signed		?^=?( char signed &, char signed ),			?^=?( volatile char signed &, char signed );
+char unsigned		?^=?( char unsigned &, char unsigned ),			?^=?( volatile char unsigned &, char unsigned );
+int short		?^=?( int short &, int short ),				?^=?( volatile int short &, int short );
+int short unsigned	?^=?( int short unsigned &, int short unsigned ),	?^=?( volatile int short unsigned &, int short unsigned );
+signed int		?^=?( signed int &, signed int ),			?^=?( volatile signed int &, signed int );
+unsigned int		?^=?( unsigned &, unsigned ),				?^=?( volatile unsigned &, unsigned );
+signed long int		?^=?( signed long int &, signed long int ),		?^=?( volatile signed long int &, signed long int );
+unsigned long int	?^=?( unsigned long int &, unsigned long int ),		?^=?( volatile unsigned long int &, unsigned long int );
+signed long long int	?^=?( signed long long int &, signed long long int ),	?^=?( volatile signed long long int &, signed long long int );
+unsigned long long int	?^=?( unsigned long long int &, unsigned long long int ), ?^=?( volatile unsigned long long int &, unsigned long long int );
+
+float			?=?(  float &, float ), ?=?(  volatile float &, float ),
+			?*=?( float &, float ), ?*=?( volatile float &, float ),
+			?/=?( float &, float ), ?/=?( volatile float &, float ),
+			?+=?( float &, float ), ?+=?( volatile float &, float ),
+			?-=?( float &, float ), ?-=?( volatile float &, float );
+
+double			?=?(  double &, double ), ?=?(  volatile double &, double ),
+			?*=?( double &, double ), ?*=?( volatile double &, double ),
+			?/=?( double &, double ), ?/=?( volatile double &, double ),
+			?+=?( double &, double ), ?+=?( volatile double &, double ),
+			?-=?( double &, double ), ?-=?( volatile double &, double );
+
+long double		?=?(  long double &, long double ), ?=?(  volatile long double &, long double ),
+			?*=?( long double &, long double ), ?*=?( volatile long double &, long double ),
+			?/=?( long double &, long double ), ?/=?( volatile long double &, long double ),
+			?+=?( long double &, long double ), ?+=?( volatile long double &, long double ),
+			?-=?( long double &, long double ), ?-=?( volatile long double &, long double );
+
+float _Complex		?=?(  float _Complex &, float _Complex ), ?=?(  volatile float _Complex &, float _Complex ),
+			?*=?( float _Complex &, float _Complex ), ?*=?( volatile float _Complex &, float _Complex ),
+			?/=?( float _Complex &, float _Complex ), ?/=?( volatile float _Complex &, float _Complex ),
+			?+=?( float _Complex &, float _Complex ), ?+=?( volatile float _Complex &, float _Complex ),
+			?-=?( float _Complex &, float _Complex ), ?-=?( volatile float _Complex &, float _Complex );
+
+double _Complex		?=?(  double _Complex &, double _Complex ), ?=?(  volatile double _Complex &, double _Complex ),
+			?*=?( double _Complex &, double _Complex ), ?*=?( volatile double _Complex &, double _Complex ),
+			?/=?( double _Complex &, double _Complex ), ?/=?( volatile double _Complex &, double _Complex ),
+			?+=?( double _Complex &, double _Complex ), ?+=?( volatile double _Complex &, double _Complex ),
+			?-=?( double _Complex &, double _Complex ), ?-=?( volatile double _Complex &, double _Complex );
+
+long double _Complex	?=?(  long double _Complex &, long double _Complex ), ?=?(  volatile long double _Complex &, long double _Complex ),
+			?*=?( long double _Complex &, long double _Complex ), ?*=?( volatile long double _Complex &, long double _Complex ),
+			?/=?( long double _Complex &, long double _Complex ), ?/=?( volatile long double _Complex &, long double _Complex ),
+			?+=?( long double _Complex &, long double _Complex ), ?+=?( volatile long double _Complex &, long double _Complex ),
+			?-=?( long double _Complex &, long double _Complex ), ?-=?( volatile long double _Complex &, long double _Complex );
+
+
+// ------------------------------------------------------------
+//
+// Section ??? Constructors and Destructors
+//
+// ------------------------------------------------------------
+
+// default ctor
+void	?{}( _Bool & );
+void	?{}( char & );
+void	?{}( unsigned char & );
+void	?{}( char signed & );
+void	?{}( int short & );
+void	?{}( int short unsigned & );
+void	?{}( signed int & );
+void	?{}( unsigned int & );
+void	?{}( signed long int & );
+void	?{}( unsigned long int & );
+void	?{}( signed long long int & );
+void	?{}( unsigned long long int & );
+void	?{}( float & );
+void	?{}( double & );
+void	?{}( long double & );
+void	?{}( float _Complex & );
+void	?{}( double _Complex & );
+void	?{}( long double _Complex & );
+void	?{}( zero_t & );
+void	?{}( one_t & );
+
+// copy ctor
+void	?{}( _Bool &, _Bool );
+void	?{}( char &, char );
+void	?{}( unsigned char &, unsigned char );
+void	?{}( char signed &, char signed );
+void	?{}( int short &, int short );
+void	?{}( int short unsigned &, int short unsigned );
+void	?{}( signed int &, signed int);
+void	?{}( unsigned int &, unsigned int);
+void	?{}( signed long int &, signed long int);
+void	?{}( unsigned long int &, unsigned long int);
+void	?{}( signed long long int &, signed long long int);
+void	?{}( unsigned long long int &, unsigned long long int);
+void	?{}( float &, float);
+void	?{}( double &, double);
+void	?{}( long double &, long double);
+void	?{}( float _Complex &, float _Complex);
+void	?{}( double _Complex &, double _Complex);
+void	?{}( long double _Complex &, long double _Complex);
+void	?{}( zero_t &, zero_t );
+void	?{}( one_t &, one_t );
+
+// dtor
+void	^?{}( _Bool & );
+void	^?{}( char & );
+void	^?{}( char unsigned & );
+void	^?{}( char signed & );
+void	^?{}( int short & );
+void	^?{}( int short unsigned & );
+void	^?{}( signed int & );
+void	^?{}( unsigned int & );
+void	^?{}( signed long int & );
+void	^?{}( unsigned long int & );
+void	^?{}( signed long long int & );
+void	^?{}( unsigned long long int & );
+void	^?{}( float & );
+void	^?{}( double & );
+void	^?{}( long double & );
+void	^?{}( float _Complex & );
+void	^?{}( double _Complex & );
+void	^?{}( long double _Complex & );
+void	^?{}( zero_t & );
+void	^?{}( one_t & );
+
+// // default ctor
+// forall( dtype DT ) void	 ?{}(		     DT ** );
+// forall( dtype DT ) void	 ?{}( const	     DT ** );
+// forall( dtype DT ) void	 ?{}(	    volatile DT ** );
+// forall( dtype DT ) void	 ?{}( const volatile DT ** );
+
+// // copy ctor
+// forall( dtype DT ) void	 ?{}(		     DT **, DT* );
+// forall( dtype DT ) void	 ?{}( const	     DT **, DT* );
+// forall( dtype DT ) void	 ?{}(	    volatile DT **, DT* );
+// forall( dtype DT ) void	 ?{}( const volatile DT **, DT* );
+
+// // dtor
+// forall( dtype DT ) void	^?{}(		     DT ** );
+// forall( dtype DT ) void	^?{}( const	     DT ** );
+// forall( dtype DT ) void	^?{}(	    volatile DT ** );
+// forall( dtype DT ) void	^?{}( const volatile DT ** );
+
+// copied from assignment section
+// copy constructors
+forall( ftype FT ) void ?{}( FT *&, FT * );
+forall( ftype FT ) void ?{}( FT * volatile &, FT * );
+
+forall( dtype DT ) void ?{}(		     DT *	   &,			DT * );
+forall( dtype DT ) void ?{}( const	     DT *	   &,			DT * );
+forall( dtype DT ) void ?{}( const	     DT *	   &, const		DT * );
+forall( dtype DT ) void ?{}(	   volatile  DT *	   &,			DT * );
+forall( dtype DT ) void ?{}(	   volatile  DT *	   &,	    volatile	DT * );
+
+forall( dtype DT ) void ?{}( const volatile  DT *	   &,			DT * );
+forall( dtype DT ) void ?{}( const volatile  DT *	   &, const		DT * );
+forall( dtype DT ) void ?{}( const volatile  DT *	   &,	    volatile	DT * );
+forall( dtype DT ) void ?{}( const volatile  DT *	   &, const volatile	DT * );
+
+forall( dtype DT ) void ?{}(		     void *	     &,			DT * );
+forall( dtype DT ) void ?{}( const	     void *	     &,			DT * );
+forall( dtype DT ) void ?{}( const	     void *	     &, const		DT * );
+forall( dtype DT ) void ?{}(	    volatile void *	     &,			DT * );
+forall( dtype DT ) void ?{}(	    volatile void *	     &,	      volatile	DT * );
+forall( dtype DT ) void ?{}( const volatile void *	     &,			DT * );
+forall( dtype DT ) void ?{}( const volatile void *	     &, const		DT * );
+forall( dtype DT ) void ?{}( const volatile void *	     &,	      volatile	DT * );
+forall( dtype DT ) void ?{}( const volatile void *	     &, const volatile	DT * );
+
+//forall( dtype DT ) void ?{}(		    DT *	  &, zero_t );
+//forall( dtype DT ) void ?{}(		    DT * volatile &, zero_t );
+forall( dtype DT ) void ?{}( const	    DT *	  &, zero_t );
+//forall( dtype DT ) void ?{}( volatile	    DT *	  &, zero_t );
+//forall( dtype DT ) void ?{}( volatile	    DT * volatile &, zero_t );
+forall( dtype DT ) void ?{}( const volatile DT *	  &, zero_t );
+
+forall( ftype FT ) void	?{}( FT *	   &, zero_t );
+
+// default ctors
+forall( ftype FT ) void	?{}( FT *	   & );
+
+forall( dtype DT ) void	?{}(		     DT *	   &);
+forall( dtype DT ) void	?{}( const	     DT *	   &);
+forall( dtype DT ) void	?{}(	   volatile  DT *	   &);
+forall( dtype DT ) void ?{}( const volatile  DT *	   &);
+
+void 	?{}(		    void *	    &);
+void 	?{}( const	    void *	    &);
+void 	?{}(	   volatile void *	    &);
+void 	?{}( const volatile void *	    &);
+
+// dtors
+forall( ftype FT ) void	^?{}( FT *	   & );
+
+forall( dtype DT ) void	^?{}(		     DT *	   &);
+forall( dtype DT ) void	^?{}( const	     DT *	   &);
+forall( dtype DT ) void	^?{}(	   volatile  DT *	   &);
+forall( dtype DT ) void ^?{}( const volatile  DT *	   &);
+
+void ^?{}(		    void *	    &);
+void ^?{}( const	    void *	    &);
+void ^?{}(	   volatile void *	    &);
+void ^?{}( const   volatile void *	    &);
+
+// Local Variables: //
+// mode: c //
+// tab-width: 8 //
+// End: //
