blob: ecc81eebdc61b9b4ab103196c8650459366817b9 [file] [log] [blame]
// compile
// Copyright 2020 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.
// Issue 40859.
package main
import (
"fmt"
)
type Number interface {
type int, int8, int16, int32, int64, uint, uint8, uint16, uint32, uint64, uintptr, float32, float64
}
type MySlice []int
type SC[E any] interface {
type []E
}
func DoubleDefined[S SC[E], E Number](s S) S {
r := make(S, len(s))
for i, v := range s {
r[i] = v + v
}
return r
}
func main() {
// Expicit types work fine
fmt.Println(DoubleDefined[MySlice, int](MySlice{1}))
// Constraint type inference does not work?
fmt.Println(DoubleDefined(MySlice{1}))
}