implementation of basic is_convertible