Здравствуйте, Кодт, Вы писали:
К>Здравствуйте, disasm, Вы писали:
К>Поясняю ещё раз
К>К>// в исходном коде
К>Some foo()
К>{
К> if(...)
К> return Some(xxxxx);
К> else
К> return Some(yyyyy);
К>}
К>void bar()
К>{
К> foo().buz(); // Some::buz
К>}
К>// как это на самом деле
К>Some* foo(void* buf)
К>{
К> if(...)
К> return new(buf) Some(xxxxx); // гуглить "placement new" !!!
К> else
К> return new(buf) Some(yyyyy);
К>}
К>void bar()
К>{
К> char buf[sizeof(Some)];
К> Some* tmp = foo(buf);
tmp->>buz();
tmp->>~Some();
К>}
К>
да! проверил компилятором + дисасмом, все так и есть
дествительно NRVO
теперь стало на всё на свои места
по этому вопросу тема закрыта