Unless you are talking about changing the behavior of type(of:), that does not work and cannot work. There is no type expression that can possibly represent "the type produced by type(of:) on a T", because type(of:) does not respect generic substitution.
Suppose that such an expression existed. To try to avoid any confusion about any, let me spell it TypeOf<T>.
-
TypeOf<any Printable>isany Printable.Type, the existential metatype. - In a context generic over
U,TypeOf<U>isU.Type. - If I substitute
U=any PrintableintoU.Type, I get(any Printable).Type, the non-existential metatype.
Or in terms of values, if I have something I know statically is an any Printable, type(of:) will produce the dynamic type of the value in the existential, packaged as an existential metatype. If I have something that I don't know statically is an any Printable, but has an opaque type that dynamically happens to be any Printable, type(of:) will produce the singleton metatype value (any Printable).Type.
If Swift gains a different feature for extracting the dynamic type which respects generic substitution, then we could also add a type expression for its result type. However, I think it would be exceptionally confusing to spell that something like any T.Type, because it makes a very subtle distinction between very similar-looking types, and because the transformation it performs is subtly bound up with the any type operator.