Forward declarations in header files are only possible if the header file only contains reference or pointer types of the forward declared type.
Another thing you can have a typedef to a container of custom value types (e.g. typedef RPointerArray
The solution is that you have to include custom.h at the beginning of special.h.
But this was a hard way to find out. *puh*