Здравствуйте, Mazay, Вы писали:
Аксиома 1. Умные указатели не панацея от всех бед.
Вы перепишите без умного указателя и поймете в чем проблема:
...
B(A& spA):a(spA)
...
B make_B()
{
A spA;
cout << "make_B" << endl;
return B(spA);
}
Аксиома 2. Сохранении на объект ссылки в классе требует, чтобы объект жил.
P.S.
Чем плохо хранить было умный указатель в классе ?