I have a question that is out of my expertise as I do not have
current C/C++ standard book.
Are you *sure* you do not violate ANSI data type aliasing rules
by deleting a tree data in destroy_tree_rep() ?
If this is indeed a violation than no one can help here from GCC front.
At least not before GCC/3.4 development AFAIK.
Sorry, I really can't get the current standard book :(
Are there any Internet resources?
Well, I am never *sure*, but it seems to be a valid hack to me,
at least until someone points out a precise reason why it wouldn't be...