Re[2]: Терминология RVO типа
От: _NN_ www.nemerleweb.com
Дата: 17.04.19 12:50
Оценка: 15 (1) +1
Здравствуйте, Erop, Вы писали:

E>Здравствуйте, _NN_, Вы писали:


_NN>>Как называется тип, который не перемещаем и не копируем, но к нему возможно применить RVO ?

E>Разве такой тип можно вернуть из функции?

Начиная с C++17 можно.
Тип не материализуется до последнего момента.
Поэтому можно писать:

#include <iostream>
using namespace std;

struct a { 
    a(a const&)=delete;
    a& operator=(a const&)=delete;
    a(a&&)=delete;
    a&& operator=(a&&)=delete;
};

a f() { return a{}; }

a g() { return f(); }

a h() { return g(); }
    

int main() {
    
    auto x = h();
    
    return 0;
}
http://rsdn.nemerleweb.com
http://nemerleweb.com
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.