Better template type parameter matching