#include <iostream>
#include <memory>
using namespace std;
class Device {
public:
    void status() { cout << "Device is active\n"; }
};
int main() {
    shared_ptr<Device> sp = make_shared<Device>();
    weak_ptr<Device> wp = sp; // observes sp
    if (auto temp = wp.lock()) {
        temp->status();
    }
    return 0;
}
Solution Explanation
shared_ptr<Device> sp = make_shared<Device>(); creates and owns the Device.weak_ptr<Device> wp = sp; observes the same object but does not increase its reference count.if (auto temp = wp.lock()) safely accesses the object if it’s still alive.Layman’s Terms
A shared_ptr is like holding the real house key. A weak_ptr is like a visitor’s pass — it doesn’t own the house but can step inside if the real owner still exists.
Significance for Embedded Developers
Input
Expected Output
Device is active