Учитывая следующий кодВыполняет ли компилятор оптимизацию возвращаемого значения в случае возвращаемой переменной-члена?
class foo
{
private:
boost::shared_ptr <std::deque<foo> > m_ptr;
public:
foo();
boost::shared_ptr <std::deque<foo> > get_my_ptr()
{
return m_ptr;
}
};
И когда мы называем get_my_ptr()
функцию как этот
boost::shared_ptr <std::deque<foo> > ptr = get_my_ptr()
ли компилятор копия вызов конструктора для создания объекта PTR или он может выполнять nrvo? А в чем разница, мы будем называть его, как этот
const boost::shared_ptr <std::deque<foo> >& ptr = get_my_ptr()
Что такое 'boost :: shared'? Я только знаком с 'boost :: shared_ptr <>', и я несколько смущен тем, почему вы будете удерживать переменную-член «shared», а затем переходите к вызывающим абонентам ...?!? – DevSolar
Извините, я исправил код. –
ОК, забудьте мой (сейчас удаленный) комментарий. У меня нет идеи, что вы пытаетесь сделать там. Класс 'foo', содержащий общий указатель на' std :: deque < foo >' и передающий его по запросу? – DevSolar