このプレフィックスによると、をstd::atomic<T>::operator++
返すため、このコードは1回T
だけインクリメントします。v
template<class T> void addTwo(std::atomic<T>& v) {
++(++v);
}
また、std::atomic<T>::operator=
明らかにを返すT
ので、このコードは一時的なものを指すために使用された無効なポインターを逆参照しますT
:
template<class T>
void setOneThenTwo(std::atomic<T>& v) {
auto ptr = &(v = 1);
*ptr = 2;
}
私はこれらのコードパターンが良い習慣であることを示唆しているわけではありませんが、std::atomic
それらを破ることは私にとって非常に驚くべきことです。operator=
私は常に、プレフィックスoperator++
がへの参照を返すことを期待してい*this
ます。
質問:std::atomic
ここでの戻り型についてのcppreferenceは正しいですか?もしそうなら、この点で組み込み型とは異なる動作をする正当な理由がありますか?