There's also the type casting taking place:
T a = b = (T)new c(); mParameters[Name] = pParam = (ShaderParameter)new FloatParameter;
...or however it should be done.
I think it would be clearer to have the cast or temporary identified on a separate line.
Er, no. There is no casting.
Assuming a and b are of type pointer to c, then assigning the value of b to a requires no type cast, and the expression new c returns a value of type pointer to c, so again there is no type cast.
Again, assuming pParam is of type ShaderParameter* and mParameters is of type std::map<std::string, ShaderParameter*> and that FloatParameter is a class derived from ShaderParameter, there is no implicit type cast anywhere in the expression. Of course, those assumptions may not hold true, in which case the code woul be unlikely to compile anyway because it's missing explicit casts.
So, I think adding explicit casts where no cast is required would confuse the reader. I don't have a problem with the multiple expressions on the same line, but then I've had to maintain maybe a million lines of C code over the years and recognize the idiom. There are many things that are far more important to readability than that (eg. max 80 character lines).