When a formal type parameter has the form of the one in this definition:
def floob[Glorp : Fleeb](arg1: Glorp): Swish = ...
... it is merely syntactic sugar for this definition:
def floob[Glorp](arg1: Glorp)(implicit i1: Fleeb[Glorp]): Swish = ...
This is called a context bound.
This explains why you're getting a diagnostic about Double
not taking type parameters.
Because this use of the single colon is entirely unrelated the one used in type annotations and type ascriptions, I uniformly write context bounds with a space on both sides of the colon and never write type annotations or type ascriptions with a space on the left (except when required, when the name to the left is punctuation rather than alphanumeric).