33 lines
1.1 KiB
Markdown
33 lines
1.1 KiB
Markdown
[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<T>::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*]
|