define OVERWRITE and CASTABLE(t)
define iterator macro