This is just a thought, but perhaps a hana::typeof_equal would be a useful feature, and then maybe even a hana::enable_if_typeof_equal would be handy for SFINAE with matching components of implementation defined types.