std::future Wait Behavior

What happens when you call get() on a std::future that has already been retrieved once?

std::future<int> fut = std::async([]{ return 42; });
int x = fut.get();
int y = fut.get(); // What happens here?
A

Blocks indefinitely

B

Returns the same value again

C

Returns a default-constructed value

D

Undefined behavior (libstdc++ throws std::future_error)