Avatar
protocol Ring {} protocol MatrixImpl { associatedtype BaseRing: Ring } struct DefaultMatrixImpl<A: Ring>: MatrixImpl { typealias BaseRing = A } struct Matrix<A, B: MatrixImpl> where B.BaseRing == A {} extension Matrix where B == DefaultMatrixImpl<A> {} // Redundant conformance constraint 'B': 'MatrixImpl' <- huh? 最後の extension で redundant だと警告が出るんですが,警告が間違ってますよね? (edited)
8:46 AM
想定している状況は、行列の実装を係数環(整数・有理数 etc)ごとに変えられるようにしたくて、行列の実装が特定の型の場合にインターフェースも拡張できるようにしたい、というものです。