std::promise and std::future

What is the relationship between std::promise and std::future?

A

future creates the value and promise consumes it

B

They are interchangeable: both can set and retrieve values

C

promise is the write end and future is the read end of a channel between threads

D

promise stores multiple values that future retrieves in FIFO order