While looking at the review comments in D103765 there was an oddity in
the tests for the following functions:
- atomic_fetch_add
- atomic_fetch_add_explicit
- atomic_fetch_sub
- atomic_fetch_sub_explicit
Libc++ allows usage of
atomic_fetch_add<int>(atomic<int*>*, atomic<int*>::difference_type);
MSVC and GCC reject this code: https://godbolt.org/z/9d8WzohbE
This makes the atomic fetch(add|sub).* Standard conforming and removes the non-conforming extensions.
Fixes PR47908
I'm not too happy with this way to constrain the function. I'm open to better suggestions.