Which ptr?

To break a cyclic ownership between two objects that hold shared_ptr to each other, one of the pointers should be replaced with which of the following?

A

std::shared_ptr with a custom deleter

B

std::unique_ptr

C

std::weak_ptr

D

A raw pointer