void destroy(I first, I last) { typedef typename boost::iterator_value<I>::type value_type; destroy_dispatch(first, last, has_trivial_destructor<value_type>()); }
void destroy(I pos) { typedef typename boost::iterator_value<I>::type value_type; destroy_dispatch(pos, has_trivial_destructor<value_type>()); }
void destroy(I pos) { typedef typename ::boost::container::iterator_traits<I>::value_type value_type; destroy_dispatch(pos, bcd::bool_<bcd::is_trivially_destructible<value_type>::value>()); }