function traits moved to aux/type_traits