Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Ссылки на r-значения - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ При инициализации массива в отладке не попадаю в обработчик, поясните почему? http://www.cyberforum.ru/cpp-beginners/thread1789462.html
имеется два класса struct Integer { explicit Integer(int const &value) : value_(value) { } Integer() :value_(0)
C++ Простейший калькулятор Всем привет :) Это одна из самых первых моим программ в C++. Решил попробовать простейший калькулятор сделать с 4 функциями. Почему-то программа ругается на переменную "c", хотя вроде как под... http://www.cyberforum.ru/cpp-beginners/thread1789442.html
C++ Getch - что не так делаю?
Всем привет. Не могу понять почему не выполняется getch() после верного ввода пункта. int name ::menu() { cout << "Выберите действие: " << endl; cout << " 1. Запись данных в файл " << endl;...
Смещение курсора по консоли C++
Всем привет! Я работаю в программе dev c++. И мне нужна помощь,чтобы определенный символ я смог переместить в любое место консоли стрелочками. Буду благодарен за сайт, где это объясняется, и не...
C++ Найти минимум в массиве используя наиболее оптимальный алгоритм http://www.cyberforum.ru/cpp-beginners/thread1789415.html
Дан массив чисел, надо найти минимум. Препод сказал - дополнительное задание: предложить наиболее оптимальный алгоритм, написать код, реализующий его идею, и обосновать его теоретически.
C++ Как передать указатель на файл в функцию? Здравствуй по ходу написания программы столкнулся с вопросом как передать указатель на тип файл в функцию. напишите код. Спасибо подробнее

Показать сообщение отдельно
notAll
419 / 140 / 31
Регистрация: 27.05.2016
Сообщений: 365
Завершенные тесты: 2
04.08.2016, 10:11
Ferrari F1, возвращать ссылки из функций можно на объекты, которые живут после ее вызова. С ссылками на rvalue можно написать как то так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
std::vector<int>&& func1(std::vector<int>& v)
{
    v.push_back(42);
    return std::move(v); //std::move скастит v с lvalue до rvalue
}
 
std::vector<int> func2()
{
    std::vector<int> v{1,2,3};
    return v; // будет перемещен
}
 
int main()
{
    std::vector<int> v{1,2,3};
    auto v2 = func1(v);
    std::cout << "v.size = " << v.size() << "\n";
    std::cout << "v2.size = " << v2.size() << "\n";
 
    auto v3 = func2();
    std::cout << "v3.size = " << v3.size() << "\n";
}
Добавлено через 3 минуты
А вот так писать не стоит, это UB:
C++
1
2
3
4
5
std::vector<int>&& func3()
{
    std::vector<int> v{1,2,3};
    return std::move(v);
}
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru