I can't find any reference to the employment of the trinary operator in the way you are proposing so believe you should not use it in this way... especially as it would be confusing to other programmers.
How did you gauge that that way is the "best"? As Bazzy's post suggested, the actual shape of the subexpression would depend on the whole expression.
If the expression was, for example, a=(a==b) ? a*b : a=a;, that would indeed work, but what if it was c=(a==b) ? a*b : a=a;?
Also note that the else operand could be simply replaced by a. You did know that the assignment operator returns the value of the left operand after assingment, right? (x=a)==a