Index: libcfa/src/exception.hfa
===================================================================
--- libcfa/src/exception.hfa	(revision 314dab6db5211064f247685abea3fd6b6211bde9)
+++ libcfa/src/exception.hfa	(revision 7c38d53def9ac073fba9cd083330388efc1bea48)
@@ -14,9 +14,8 @@
 //
 
-// WARNING: This is for documentation as it will match ANY type.
 trait is_exception(dtype T) {
-	/* The first field must be a pointer to a virtual table.
-	 * That virtual table must be a decendent of the base exception virtual table.
-	 */
+	// The trait system can't describe the actual constrants.
+	// Unused, should always be a no-op.
+	void mark_exception(T *);
 };
 
@@ -81,4 +80,5 @@
 #define _VTABLE_DECLARATION(exception_name, parent_name, ...) \
 	struct exception_name; \
+	void mark_exception(exception_name *); \
 	VTABLE_TYPE(exception_name); \
 	extern VTABLE_TYPE(exception_name) VTABLE_NAME(exception_name); \
@@ -97,4 +97,5 @@
 #define VTABLE_INSTANCE(...) _EXC_DISPATCH(_VTABLE_INSTANCE, __VA_ARGS__)
 #define _VTABLE_INSTANCE(exception_name, parent_name, ...) \
+	void mark_exception(exception_name *) {} \
 	void _GLUE2(exception_name,_copy)(exception_name * this, exception_name * other) { \
 		*this = *other; \
