0

std::atomic_fetch_xxx (or, and, add, sub, xor)の自由関数のセットは、std::atomic<T>*名前付きの objを入力として受け取ります。

template< class T >
T atomic_fetch_sub(std::atomic<T>* obj,
                   typename std::atomic<T>::difference_type arg ) noexcept;

質問: std::atomic 型がポインターとして解釈され、代わりに参照として渡されないのはなぜですか。

T atomic_fetch_sub(std::atomic<T>& obj,
                   typename std::atomic<T>::difference_type arg ) noexcept;

実用的な合理性/理由はありますか、それとも単に文体的なものですか?

4

3 に答える 3

2

std::atomic_fetch が入力パラメーターとしてポインターを取るのはなぜですか

atomic_fetch_sub最初のパラメーターの値を更新できる必要があります (失敗した場合)。これには、最初の引数をポインターまたは参照で渡す必要があります。

C インターフェイスとの互換性を持たせるために、ポインターが選択されました。

于 2018-04-28T02:27:42.110 に答える