ranges::distance uses SizedIterable concept where appropriate