[atomics.nonmembers] # 32 Concurrency support library [[thread]](./#thread) ## 32.5 Atomic operations [[atomics]](atomics#nonmembers) ### 32.5.9 Non-member functions [atomics.nonmembers] [1](#1) [#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/threads.tex#L6779) A non-member function template whose name matches the patternatomic_*f* or the pattern atomic_*f*_explicit invokes the member function *f*, with the value of the first parameter as the object expression and the values of the remaining parameters (if any) as the arguments of the member function call, in order[.](#1.sentence-1) An argument for a parameter of type atomic​::​value_type* is dereferenced when passed to the member function call[.](#1.sentence-2) If no such member function exists, the program is ill-formed[.](#1.sentence-3) [2](#2) [#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/threads.tex#L6789) [*Note [1](#note-1)*: The non-member functions enable programmers to write code that can be compiled as either C or C++, for example in a shared header file[.](#2.sentence-1) — *end note*]