I wonder if we care about the performance of getting the distance at all, it's only used to create dynamic matchers afaik. Making the non-distance measurement case fast and leaving the case with distances as-is would help clang-tidy and allows a simpler implementation. http://reviews.llvm.org/D5577