// Copyright 2021 The Go Authors. All rights reserved. // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. package p func f[P any](a, _ P) { var x int // TODO(gri) these error messages, while correct, could be better f(a, x /* ERROR "type int of x does not match inferred type P for P" */) f(x, a /* ERROR "type P of a does not match inferred type int for P" */) } func g[P any](a, b P) { g(a, b) g(&a, &b) g([]P{}, []P{}) // work-around: provide type argument explicitly g[*P](&a, &b) g[[]P]([]P{}, []P{}) }