building smart_ptr as a separate library