typeof
( ::CppUnit::TestAssert::assertEquals<typeof(expected)>( (expected), \
( ::CppUnit::TestAssert::assertEquals<typeof(expected)>( (expected), \
typeof (a) _a = (a); \
typeof (b) _b = (b); \
typeof (a) _a = (a); \
typeof (b) _b = (b); \
((val) & (~((typeof(val))((align) - 1))))
#ifndef typeof
#define SLLPTROFF(type,item,nextp) ((typeof(item))(((char *)(item)) + offsetof(item, nextp)))
#define SLLITEM2PTR(type,item,nextp) ((typeof(item))(((char *)(item)) + offsetof(item, nextp)))
#define SLLPTR2ITEM(type,ptr,nextp) ((typeof(ptr))(((char *)(ptr)) - offsetof(ptr, nextp)))
#define SLLNEXT(type,item,nextp) (*(typeof(item))(((char *)(item)) + offsetof(item, nextp)))
#define SLL_FIND(_head,_nextp,_func,_with) (typeof(_head))sll_find(offsetof(typeof(*_head),_nextp), (void *)(_head), _func, _with)
#define SLL_INSERT(_head,_nextp,_item) sll_insert_head(offsetof(typeof(*_head),_nextp), (void **)&(_head), _item)
#define SLL_INSERT_TAIL(_head,_nextp,_item) sll_insert_head(offsetof(typeof(*_head),_nextp), (void **)&(_head), _item)
#define SLL_DEQUEUE(_head,_nextp) (typeof(_head))sll_dequeue_tail(offsetof(typeof(*_head),_nextp), (void **)&(_head))
#define SLL_REMOVE(_head,_nextp,_item) sll_remove(offsetof(typeof(*_head),_nextp), (void **)&(_head), _item)
#define MAX(a,b) ({ typeof(a) _a = (a); typeof(b) _b = (b); \
#define SWAP(x, y) ({ typeof(x) _tmp = x; x = y; y = _tmp; })