Thanks, my mistake.<p>I&#x27;ve been bit by this before.  I sometimes wish you had to mark &quot;reference-of&quot; just like you have to mark &quot;address-of&quot; with &amp;.<p>It&#x27;s obvious that blah(&amp;foo) might modify foo, without needing to examine the signature of blah().<p>The tradeoff is a bit of code clutter when you add a symbol (something like shared.compare_exchange_weak(%oldValue, oldValue * multiplier)), and a violation of DRY, since the information provided by this symbol would be redundant.