Const Is Not Deep

class Cache {
    mutable int hits_ = 0;
    int value_ = 7;
    int* ptr_ = &value_;
public:
    int get() const {
        ++hits_;             // (1)
        *ptr_ = 99;          // (2)
        ptr_ = nullptr;      // (3)
        return value_;
    }
};

Which of (1), (2) and (3) compile?

A

(1) and (3) compile; (2) does not, because it changes observable state

B

(1) and (2) compile; (3) does not

C

None compile; a const member function may not modify anything

D

Only (1) compiles