Index: src/libcfa/containers/vector
===================================================================
--- src/libcfa/containers/vector	(revision 6dc78deeb7aa8ae26d290940106fb79598146d3b)
+++ src/libcfa/containers/vector	(revision f3fc631fd4c6f01e9eff41521dac0171ea98fa7e)
@@ -22,4 +22,34 @@
 
 //------------------------------------------------------------------------------
+//Allocator
+forall(otype T)
+struct heap_allocator
+{
+	T* storage;
+	size_t capacity;
+};
+
+forall(otype T)
+void ?{}(heap_allocator(T)* this);
+
+forall(otype T)
+void ?{}(heap_allocator(T)* this, heap_allocator(T) rhs);
+
+forall(otype T)
+heap_allocator(T) ?=?(heap_allocator(T)* this, heap_allocator(T) rhs);
+
+forall(otype T)
+void ^?{}(heap_allocator(T)* this);
+
+forall(otype T)
+void realloc_storage(heap_allocator(T)* this, size_t size);
+
+forall(otype T)
+static inline T* data(heap_allocator(T)* this)
+{
+	return this->storage;
+}
+
+//------------------------------------------------------------------------------
 //Declaration
 trait allocator_c(otype T, otype allocator_t)
@@ -29,5 +59,5 @@
 };
 
-forall(otype T, otype allocator_t | allocator_c(T, allocator_t))
+forall(otype T, otype allocator_t = heap_allocator(T) | allocator_c(T, allocator_t))
 struct vector;
 
@@ -46,5 +76,5 @@
 void ^?{}(vector(T, allocator_t)* this);
 
-forall(otype T, otype allocator_t | allocator_c(T, allocator_t))
+forall(otype T, otype allocator_t = heap_allocator(T) | allocator_c(T, allocator_t))
 struct vector
 {
@@ -136,34 +166,4 @@
 // }
 
-//------------------------------------------------------------------------------
-//Allocator
-forall(otype T)
-struct heap_allocator
-{
-	T* storage;
-	size_t capacity;
-};
-
-forall(otype T)
-void ?{}(heap_allocator(T)* this);
-
-forall(otype T)
-void ?{}(heap_allocator(T)* this, heap_allocator(T) rhs);
-
-forall(otype T)
-heap_allocator(T) ?=?(heap_allocator(T)* this, heap_allocator(T) rhs);
-
-forall(otype T)
-void ^?{}(heap_allocator(T)* this);
-
-forall(otype T)
-void realloc_storage(heap_allocator(T)* this, size_t size);
-
-forall(otype T)
-static inline T* data(heap_allocator(T)* this)
-{
-	return this->storage;
-}
-
 #endif // VECTOR_H
 
