std::atomic Compare-Exchange

What does compare_exchange_strong return if the comparison fails?

std::atomic<int> counter{5};
int expected = 10;
bool result = counter.compare_exchange_strong(expected, 20);
A

Throws an exception

B

true, and expected remains 10

C

false, and expected remains 10

D

false, and expected is updated to 5