Signed Overflow

What does the C++ standard say about the following code?

#include <climits>
int main() {
    int x = INT_MAX;
    x = x + 1;
    return 0;
}
A

The compiler must emit a warning and the result is 0

B

x wraps around to INT_MIN

C

The program throws a runtime exception

D

Undefined behavior