|
26 | 26 |
|
27 | 27 | template <typename T, typename U>
|
28 | 28 | concept has_compare_exchange_strong_1 =
|
29 |
| - requires { std::declval<T>().compare_exchange_strong(std::declval<U&>(), std::declval<U>()); }; |
| 29 | + requires(T const& x, U& expected, U desired) { x.compare_exchange_strong(expected, desired); }; |
30 | 30 | template <typename T, typename U>
|
31 |
| -concept has_compare_exchange_strong_2 = requires { |
32 |
| - std::declval<T>().compare_exchange_strong(std::declval<U&>(), std::declval<U>(), std::declval<std::memory_order>()); |
| 31 | +concept has_compare_exchange_strong_2 = requires(T const& x, U& expected, U desired, std::memory_order order) { |
| 32 | + x.compare_exchange_strong(expected, desired, order); |
33 | 33 | };
|
34 | 34 | template <typename T, typename U>
|
35 |
| -concept has_compare_exchange_strong_3 = requires { |
36 |
| - std::declval<T>().compare_exchange_strong( |
37 |
| - std::declval<U&>(), std::declval<U>(), std::declval<std::memory_order>(), std::declval<std::memory_order>()); |
38 |
| -}; |
| 35 | +concept has_compare_exchange_strong_3 = |
| 36 | + requires(T const& x, U& expected, U desired, std::memory_order success, std::memory_order failure) { |
| 37 | + x.compare_exchange_strong(expected, desired, success, failure); |
| 38 | + }; |
39 | 39 |
|
40 | 40 | template <typename T, typename U>
|
41 | 41 | concept has_compare_exchange_strong =
|
|
0 commit comments