generalize, more abstruse SFINAE
Full coverage