Index: src/prelude/builtins.c
===================================================================
--- src/prelude/builtins.c	(revision a5f0529a63fd135c870940242904abe5132d58e6)
+++ src/prelude/builtins.c	(revision db67b11a26ef91f7c97930c8bb9f50bead0353ad)
@@ -80,5 +80,5 @@
 } // ?\?
 
-static inline forall( otype T | { void ?{}( T * this, one_t ); T ?*?( T, T ); double ?/?( double, T ); } )
+static inline forall( otype T | { void ?{}( T & this, one_t ); T ?*?( T, T ); double ?/?( double, T ); } )
 double ?\?( T x, signed long int y ) {
     if ( y >=  0 ) return (double)(x \ (unsigned long int)y);
Index: src/prelude/prelude.cf
===================================================================
--- src/prelude/prelude.cf	(revision a5f0529a63fd135c870940242904abe5132d58e6)
+++ src/prelude/prelude.cf	(revision db67b11a26ef91f7c97930c8bb9f50bead0353ad)
@@ -30,49 +30,49 @@
 // ------------------------------------------------------------
 
-_Bool			?++( _Bool * ),				?++( volatile _Bool * );
-_Bool			?--( _Bool * ),				?--( volatile _Bool * );
-unsigned char		?++( unsigned char * ),			?++( volatile unsigned char * );
-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) ) lvalue T		 ?[?](		      T *,	    ptrdiff_t );
-forall( dtype T | sized(T) ) const lvalue T	 ?[?]( const	      T *,	    ptrdiff_t );
-forall( dtype T | sized(T) ) volatile lvalue T	 ?[?](       volatile T *,	    ptrdiff_t );
-forall( dtype T | sized(T) ) const volatile lvalue T ?[?]( const volatile T *,	    ptrdiff_t );
-forall( dtype T | sized(T) ) lvalue T		 ?[?](		ptrdiff_t,		  T * );
-forall( dtype T | sized(T) ) const lvalue T	 ?[?](		ptrdiff_t, const	  T * );
-forall( dtype T | sized(T) ) volatile lvalue T	 ?[?](		ptrdiff_t,	 volatile T * );
-forall( dtype T | sized(T) ) const volatile lvalue T ?[?](		ptrdiff_t, const volatile T * );
+_Bool			?++( _Bool & ),				?++( volatile _Bool & );
+_Bool			?--( _Bool & ),				?--( volatile _Bool & );
+unsigned char		?++( unsigned char & ),			?++( volatile unsigned char & );
+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 * );
 
 // ------------------------------------------------------------
@@ -82,32 +82,32 @@
 // ------------------------------------------------------------
 
-_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 * );
-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) ) lvalue T		 *?(		     T * );
-forall( dtype T | sized(T) ) const lvalue T		 *?( const	     T * );
-forall( dtype T | sized(T) ) volatile lvalue T	 *?(       volatile  T * );
-forall( dtype T | sized(T) ) const volatile lvalue T *?( const volatile  T * );
-forall( ftype FT ) lvalue FT		 *?( FT * );
+_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 & );
+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 ),			~?( _Bool );
@@ -366,295 +366,295 @@
 // ------------------------------------------------------------
 
-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 ) DT *			?=?(		     DT *	   *,			void * );
-forall( dtype DT ) DT *			?=?(		     DT * volatile *,			void * );
-forall( dtype DT ) const DT *		?=?( const	     DT *	   *,			void * );
-forall( dtype DT ) const DT *		?=?( const	     DT * volatile *,			void * );
-forall( dtype DT ) const DT *		?=?( const	     DT *	   *, const		void * );
-forall( dtype DT ) const DT *		?=?( const	     DT * volatile *, const		void * );
-forall( dtype DT ) volatile DT *	?=?(	   volatile  DT *	   *,			void * );
-forall( dtype DT ) volatile DT *	?=?(	   volatile  DT * volatile *,			void * );
-forall( dtype DT ) volatile DT *	?=?(	   volatile  DT *	   *,	    volatile	void * );
-forall( dtype DT ) volatile DT *	?=?(	   volatile  DT * volatile *,	    volatile	void * );
-
-forall( dtype DT ) const volatile DT *	?=?( const volatile  DT *	   *,			void * );
-forall( dtype DT ) const volatile DT *	?=?( const volatile  DT * volatile *,			void * );
-forall( dtype DT ) const volatile DT *	?=?( const volatile  DT *	   *, const		void * );
-forall( dtype DT ) const volatile DT *	?=?( const volatile  DT * volatile *, const		void * );
-forall( dtype DT ) const volatile DT *	?=?( const volatile  DT *	   *,	    volatile	void * );
-forall( dtype DT ) const volatile DT *	?=?( const volatile  DT * volatile *,	    volatile	void * );
-forall( dtype DT ) const volatile DT *	?=?( const volatile  DT *	   *, const volatile	void * );
-forall( dtype DT ) const volatile DT *	?=?( const volatile  DT * volatile *, const volatile	void * );
-
-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 * );
-
-void *			?=?(		    void *	    *,		      void * );
-void *			?=?(		    void * volatile *,		      void * );
-const void *		?=?( const	    void *	    *,		      void * );
-const void *		?=?( const	    void * volatile *,		      void * );
-const void *		?=?( const	    void *	    *, const	      void * );
-const void *		?=?( const	    void * volatile *, const	      void * );
-volatile void *		?=?(	   volatile void *	    *,		      void * );
-volatile void *		?=?(	   volatile void * volatile *,		      void * );
-volatile void *		?=?(	   volatile void *	    *,	     volatile void * );
-volatile void *		?=?(	   volatile void * volatile *,	     volatile void * );
-const volatile void *	?=?( const volatile void *	    *,		      void * );
-const volatile void *	?=?( const volatile void * volatile *,		      void * );
-const volatile void *	?=?( const volatile void *	    *, const	      void * );
-const volatile void *	?=?( const volatile void * volatile *, const	      void * );
-const volatile void *	?=?( const volatile void *	    *,	     volatile void * );
-const volatile void *	?=?( const volatile void * volatile *,	     volatile void * );
-const volatile void *	?=?( const volatile void *	    *, const volatile void * );
-const volatile void *	?=?( const volatile void * volatile *, const volatile void * );
-
-// //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 *,  );
-// 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 );
-
-
-_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 );
-
-_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 );
-
-_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 );
-
-_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 );
+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 ) DT *			?=?(		     DT *	   &,			void * );
+forall( dtype DT ) DT *			?=?(		     DT * volatile &,			void * );
+forall( dtype DT ) const DT *		?=?( const	     DT *	   &,			void * );
+forall( dtype DT ) const DT *		?=?( const	     DT * volatile &,			void * );
+forall( dtype DT ) const DT *		?=?( const	     DT *	   &, const		void * );
+forall( dtype DT ) const DT *		?=?( const	     DT * volatile &, const		void * );
+forall( dtype DT ) volatile DT *	?=?(	   volatile  DT *	   &,			void * );
+forall( dtype DT ) volatile DT *	?=?(	   volatile  DT * volatile &,			void * );
+forall( dtype DT ) volatile DT *	?=?(	   volatile  DT *	   &,	    volatile	void * );
+forall( dtype DT ) volatile DT *	?=?(	   volatile  DT * volatile &,	    volatile	void * );
+
+forall( dtype DT ) const volatile DT *	?=?( const volatile  DT *	   &,			void * );
+forall( dtype DT ) const volatile DT *	?=?( const volatile  DT * volatile &,			void * );
+forall( dtype DT ) const volatile DT *	?=?( const volatile  DT *	   &, const		void * );
+forall( dtype DT ) const volatile DT *	?=?( const volatile  DT * volatile &, const		void * );
+forall( dtype DT ) const volatile DT *	?=?( const volatile  DT *	   &,	    volatile	void * );
+forall( dtype DT ) const volatile DT *	?=?( const volatile  DT * volatile &,	    volatile	void * );
+forall( dtype DT ) const volatile DT *	?=?( const volatile  DT *	   &, const volatile	void * );
+forall( dtype DT ) const volatile DT *	?=?( const volatile  DT * volatile &, const volatile	void * );
+
+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 * );
+
+void *			?=?(		    void *	    &,		      void * );
+void *			?=?(		    void * volatile &,		      void * );
+const void *		?=?( const	    void *	    &,		      void * );
+const void *		?=?( const	    void * volatile &,		      void * );
+const void *		?=?( const	    void *	    &, const	      void * );
+const void *		?=?( const	    void * volatile &, const	      void * );
+volatile void *		?=?(	   volatile void *	    &,		      void * );
+volatile void *		?=?(	   volatile void * volatile &,		      void * );
+volatile void *		?=?(	   volatile void *	    &,	     volatile void * );
+volatile void *		?=?(	   volatile void * volatile &,	     volatile void * );
+const volatile void *	?=?( const volatile void *	    &,		      void * );
+const volatile void *	?=?( const volatile void * volatile &,		      void * );
+const volatile void *	?=?( const volatile void *	    &, const	      void * );
+const volatile void *	?=?( const volatile void * volatile &, const	      void * );
+const volatile void *	?=?( const volatile void *	    &,	     volatile void * );
+const volatile void *	?=?( const volatile void * volatile &,	     volatile void * );
+const volatile void *	?=?( const volatile void *	    &, const volatile void * );
+const volatile void *	?=?( const volatile void * volatile &, const volatile void * );
+
+//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 *	   &, forall( ftype FT2 ) FT2 * );
+forall( ftype FT ) FT *			?=?( FT * volatile &, forall( ftype FT2 ) FT2 * );
+
+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 );
+
+
+_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 );
+
+_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 );
+
+_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 );
+
+_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 );
 
 
@@ -669,68 +669,68 @@
 
 // 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 * );
+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 );
+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 * );
+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
@@ -754,83 +754,83 @@
 // 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 ?{}(		     DT *	   *,			void * );
-forall( dtype DT ) void ?{}( const	     DT *	   *,			void * );
-forall( dtype DT ) void ?{}( const	     DT *	   *, const		void * );
-forall( dtype DT ) void ?{}(	   volatile  DT *	   *,			void * );
-forall( dtype DT ) void ?{}(	   volatile  DT *	   *,	    volatile	void * );
-
-forall( dtype DT ) void ?{}( const volatile  DT *	   *,			void * );
-forall( dtype DT ) void ?{}( const volatile  DT *	   *, const		void * );
-forall( dtype DT ) void ?{}( const volatile  DT *	   *,	    volatile	void * );
-forall( dtype DT ) void ?{}( const volatile  DT *	   *, const volatile	void * );
-
-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 * );
-
-void 	?{}(		    void *	    *,		      void * );
-void 	?{}( const	    void *	    *,		      void * );
-void 	?{}( const	    void *	    *, const	      void * );
-void 	?{}(	   volatile void *	    *,		      void * );
-void 	?{}(	   volatile void *	    *,	     volatile void * );
-void 	?{}( const volatile void *	    *,		      void * );
-void 	?{}( const volatile void *	    *, const	      void * );
-void 	?{}( const volatile void *	    *,	     volatile void * );
-void 	?{}( const volatile void *	    *, const volatile void * );
-
-// //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 );
+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 ?{}(		     DT *	   &,			void * );
+forall( dtype DT ) void ?{}( const	     DT *	   &,			void * );
+forall( dtype DT ) void ?{}( const	     DT *	   &, const		void * );
+forall( dtype DT ) void ?{}(	   volatile  DT *	   &,			void * );
+forall( dtype DT ) void ?{}(	   volatile  DT *	   &,	    volatile	void * );
+
+forall( dtype DT ) void ?{}( const volatile  DT *	   &,			void * );
+forall( dtype DT ) void ?{}( const volatile  DT *	   &, const		void * );
+forall( dtype DT ) void ?{}( const volatile  DT *	   &,	    volatile	void * );
+forall( dtype DT ) void ?{}( const volatile  DT *	   &, const volatile	void * );
+
+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 * );
+
+void 	?{}(		    void *	    &,		      void * );
+void 	?{}( const	    void *	    &,		      void * );
+void 	?{}( const	    void *	    &, const	      void * );
+void 	?{}(	   volatile void *	    &,		      void * );
+void 	?{}(	   volatile void *	    &,	     volatile void * );
+void 	?{}( const volatile void *	    &,		      void * );
+void 	?{}( const volatile void *	    &, const	      void * );
+void 	?{}( const volatile void *	    &,	     volatile void * );
+void 	?{}( const volatile void *	    &, const volatile void * );
+
+//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 *	   &, forall( ftype FT2 ) FT2 * );
 
 // 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 *	    *);
+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 *	    *);
+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: //
