Упоминание ldx об указателях дало мне идею.Я никогда раньше не использовал shared_ptr, но я подумал, что это может быть решением, поэтому я посмотрел их и нашел решение:
Edit: изменено на auto_ptr
int main()
{
auto_ptr<vector<string> > vsptr;
{
string s[] = {"Ben", "Joe", "Bob", "Matt"};
int cnt = sizeof(s)/sizeof(string);
vsptr = auto_ptr<vector<string> >(new vector<string>(s,s+cnt));
}
vector<string> &names = *vsptr;
}
Я протестировал его с классом, который объявляет его конструкторы, назначения и деструкторы, и есть только одна конструкция по умолчанию и одно уничтожение.Конечно, это требует повышения, если ваш компилятор еще не реализует tr1, но какой компилятор, чёрт побери, этого не делает?