Index: src/libcfa/stdlib
===================================================================
--- src/libcfa/stdlib	(revision 0c92c9f0632273f81f11622ea9a570797b9c7092)
+++ 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 0c92c9f0632273f81f11622ea9a570797b9c7092)
+++ 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 };
