koala написав:incred написав:Чи можна, в даному випадку, назвати delete деструктором?
 Звісно ні, з якого це дива? Деструктор - це особливий член, що викликається при знищенні об'єкту. Звідкіля члени в стандартного вказівника? І як стандартна функція може раптом стати членом класу?
 Ви мене неправильно зрозуміли: чи буде виконуватися операція delete, чи залишиться пам'ять зайнятою при знищенні самого об'єкту типу pair?
koala написав:incred написав:Якщо я буду використовувати std::pair як boost::tr1::shared_ptr, протікання не буде?
 Якщо ви будете використовувати літак як підводний човен, протікання не буде? Чи ви щось інше хотіли спитати?
 Тут я мав на увазі, чи є у цих класів схожа функція, а в загальному вигляді так: як знищуються вказівники опосередковано.
А щодо цього, то я знайшов відповідь таким прикладом.
Ось:
#include <iostream>
#include <utility>
#include <conio.h>
using namespace std;
class a {
    static int total;
    int id;
public:
    a(): id(total++) {
        cout<<"An a-objrct was created! its index: "<<id<<endl;
    }
    a(const a& i): id(total++) {
        cout<<"The a-object with index "<<i.id
            <<" has been successfully copied!"<<endl;
    }
    ~a() {
        cout<<"The a-object with index "<<id
            <<" has been successfully destroyed!"<<endl;
    }
};
int a::total = 1;
int main() {
    
    a* x = new a;
    cout<<"pointer is created"<<endl;
    _getch();
    pair<a*, a>* p1 = new pair<a*, a>(x, *x);
    delete p1;
    _getch();
    return 0;
}
Результат програми такий:
An a-objrct was created! its index: 1
pointer is created
The a-object with index 1 has been successfully copied!
The a-object with index 2 has been successfully destroyed!