default-constructing tags causes incompleteness problems with clang
result_of protocol compatibility for generic_dispatchers