Index: src/libcfa/stdlib
===================================================================
--- src/libcfa/stdlib	(revision f97b614325a35dd584678cf2143cd1981af1bde8)
+++ src/libcfa/stdlib	(revision 59239b84fd4ba5adc24ed841ef6b13ecd6e388af)
@@ -29,17 +29,17 @@
 
 extern "C" { void * malloc( size_t ); }					// use default C routine for void *
-forall( otype T ) T * malloc( void );
-forall( otype T ) T * malloc( char fill );
-forall( otype T ) T * malloc( T * ptr, size_t size );
-forall( otype T ) T * malloc( T * ptr, size_t size, unsigned char fill );
+forall( dtype T | sized(T) ) T * malloc( void );
+forall( dtype T | sized(T) ) T * malloc( char fill );
+forall( dtype T | sized(T) ) T * malloc( T * ptr, size_t size );
+forall( dtype T | sized(T) ) T * malloc( T * ptr, size_t size, unsigned char fill );
 extern "C" { void * calloc( size_t nmemb, size_t size ); } // use default C routine for void *
-forall( otype T ) T * calloc( size_t nmemb );
+forall( dtype T | sized(T) ) T * calloc( size_t nmemb );
 extern "C" { void * realloc( void * ptr, size_t size ); } // use default C routine for void *
-forall( otype T ) T * realloc( T * ptr, size_t size );
-forall( otype T ) T * realloc( T * ptr, size_t size, unsigned char fill );
+forall( dtype T | sized(T) ) T * realloc( T * ptr, size_t size );
+forall( dtype T | sized(T) ) T * realloc( T * ptr, size_t size, unsigned char fill );
 
-forall( otype T ) T * aligned_alloc( size_t alignment );
-forall( otype T ) T * memalign( size_t alignment );		// deprecated
-forall( otype T ) int posix_memalign( T ** ptr, size_t alignment );
+forall( dtype T | sized(T) ) T * aligned_alloc( size_t alignment );
+forall( dtype T | sized(T) ) T * memalign( size_t alignment );		// deprecated
+forall( dtype T | sized(T) ) int posix_memalign( T ** ptr, size_t alignment );
 
 extern "C" {
@@ -48,5 +48,5 @@
 } // extern "C"
 
-forall( otype T, ttype Params | { void ?{}(T *, Params); } ) T * new( Params p );
+forall( dtype T, ttype Params | sized(T) | { void ?{}(T *, Params); } ) T * new( Params p );
 forall( dtype T | { void ^?{}(T *); } ) void delete( T * ptr );
 
Index: src/libcfa/stdlib.c
===================================================================
--- src/libcfa/stdlib.c	(revision f97b614325a35dd584678cf2143cd1981af1bde8)
+++ src/libcfa/stdlib.c	(revision 59239b84fd4ba5adc24ed841ef6b13ecd6e388af)
@@ -27,9 +27,9 @@
 } // extern "C"
 
-forall( otype T ) T * malloc( void ) {
+forall( dtype T | sized(T) ) T * malloc( void ) {
 	//printf( "malloc1\n" );
     return (T *)malloc( sizeof(T) );
 } // malloc
-forall( otype T ) T * malloc( char fill ) {
+forall( dtype T | sized(T) ) T * malloc( char fill ) {
 	//printf( "malloc3\n" );
 	T * ptr = (T *)malloc( sizeof(T) );
@@ -37,14 +37,14 @@
 } // malloc
 
-forall( otype T ) T * calloc( size_t nmemb ) {
+forall( dtype T | sized(T) ) T * calloc( size_t nmemb ) {
 	//printf( "calloc\n" );
     return (T *)calloc( nmemb, sizeof(T) );
 } // calloc
 
-forall( otype T ) T * realloc( T * ptr, size_t size ) {
+forall( dtype T | sized(T) ) T * realloc( T * ptr, size_t size ) {
 	//printf( "realloc1\n" );
     return (T *)(void *)realloc( (void *)ptr, size );
 } // realloc
-forall( otype T ) T * realloc( T * ptr, size_t size, unsigned char fill ) {
+forall( dtype T | sized(T) ) T * realloc( T * ptr, size_t size, unsigned char fill ) {
 	//printf( "realloc2\n" );
     char * nptr = (T *)(void *)realloc( (void *)ptr, size );
@@ -54,29 +54,29 @@
 } // realloc
 
-forall( otype T ) T * malloc( T * ptr, size_t size ) {
+forall( dtype T | sized(T) ) T * malloc( T * ptr, size_t size ) {
 	//printf( "malloc4\n" );
     return (T *)realloc( ptr, size );
 } // malloc
-forall( otype T ) T * malloc( T * ptr, size_t size, unsigned char fill ) {
+forall( dtype T | sized(T) ) T * malloc( T * ptr, size_t size, unsigned char fill ) {
 	//printf( "malloc5\n" );
     return (T *)realloc( ptr, size, fill );
 } // malloc
 
-forall( otype T ) T * aligned_alloc( size_t alignment ) {
+forall( dtype T | sized(T) ) T * aligned_alloc( size_t alignment ) {
 	//printf( "aligned_alloc\n" );
     return (T *)memalign( alignment, sizeof(T) );
 } // aligned_alloc
 
-forall( otype T ) T * memalign( size_t alignment ) {
+forall( dtype T | sized(T) ) T * memalign( size_t alignment ) {
 	//printf( "memalign\n" );
     return (T *)memalign( alignment, sizeof(T) );
 } // memalign
 
-forall( otype T ) int posix_memalign( T ** ptr, size_t alignment ) {
+forall( dtype T | sized(T) ) int posix_memalign( T ** ptr, size_t alignment ) {
 	//printf( "posix_memalign\n" );
     return posix_memalign( (void **)ptr, alignment, sizeof(T) );
 } // posix_memalign
 
-forall( otype T, ttype Params | { void ?{}(T *, Params); } )
+forall( dtype T, ttype Params | sized(T) | { void ?{}(T *, Params); } )
 T * new( Params p ) {
 	return ((T*)malloc()){ p };
Index: src/tests/dtor-early-exit.c
===================================================================
--- src/tests/dtor-early-exit.c	(revision f97b614325a35dd584678cf2143cd1981af1bde8)
+++ src/tests/dtor-early-exit.c	(revision 59239b84fd4ba5adc24ed841ef6b13ecd6e388af)
@@ -28,9 +28,9 @@
 // don't want these called
 void ?{}(A * a) { assert( false ); }
-void ?{}(A * a, char * name) { a->name = name; sout | "construct " | name | endl; a->x = malloc(); }
+void ?{}(A * a, char * name) { a->name = name; sout | "construct " | name | endl; a->x = (int*)malloc(); }
 void ?{}(A * a, char * name, int * ptr) { assert( false ); }
 
 A ?=?(A * a, A a) {  sout | "assign " | a->name | " " | a.name; return a; }
-void ?{}(A * a, A a) { sout | "copy construct " | a.name | endl; a->x = malloc(); }
+void ?{}(A * a, A a) { sout | "copy construct " | a.name | endl; a->x = (int*)malloc(); }
 void ^?{}(A * a) { sout | "destruct " | a->name | endl; free(a->x); }
 
Index: src/tests/tupleVariadic.c
===================================================================
--- src/tests/tupleVariadic.c	(revision f97b614325a35dd584678cf2143cd1981af1bde8)
+++ src/tests/tupleVariadic.c	(revision 59239b84fd4ba5adc24ed841ef6b13ecd6e388af)
@@ -29,5 +29,5 @@
 }
 
-forall(otype T, ttype Params | { void ?{}(T *, Params); })
+forall( dtype T, ttype Params | sized(T) | { void ?{}(T *, Params); } )
 T * new(Params p);
 
