template<typename T1, typename T2, typename T3,
bool is_poly1 = poly_int_traits<T1>::is_poly,
bool is_poly2 = poly_int_traits<T2>::is_poly>
struct if_nonpoly2< T1, T2, T3, is_poly1, is_poly2 >
SFINAE class that makes T3 available as "type" if both T1 and T2 are
non-polynomial types.