You can do that if your constraining protocol defines an initializer with the desired signature. I tried with both a struct extension and a protocol extension, no problem. Is this about modifying the interface of SignedIntegerType, then? Guillaume Lessard