63 / 35 / 25
Регистрация: 17.07.2014
Сообщений: 457
|
||||||
1 | ||||||
Применение std::forward20.09.2016, 13:44. Просмотров 1378. Ответов 6
Метки нет Все метки)
(
Хочу сделать внутри метода большой обьект. Затем передать его через return. Для этого хочу использовать move семантику. Верно ли данное решение?
0
|
|
20.09.2016, 13:44 | |
В каком случае используется вторая перегрузка std::forward? Применение std::max_element с функцией сравнения |
|
129 / 101 / 58
Регистрация: 26.10.2013
Сообщений: 306
|
|
20.09.2016, 13:48 | 2 |
Почитайте про NRVO и RVO.
0
|
63 / 35 / 25
Регистрация: 17.07.2014
Сообщений: 457
|
|
20.09.2016, 13:53 [ТС] | 3 |
Мне нужно сделать это явно, не полагаясь на компилятор.
0
|
13890 / 7424 / 1761
Регистрация: 30.01.2014
Сообщений: 12,420
|
||||||
20.09.2016, 13:56 | 4 | |||||
Оно избыточно. И потенциально блокирует более эффективные RVO/NRVO.
Достаточно оставить так:
Hotkey конструктора перемещения, он и будет использоваться (в худшем случае), а в лучшем случае вообще ничего не будет вызвано, т.к. сработает NRVO.
0
|
63 / 35 / 25
Регистрация: 17.07.2014
Сообщений: 457
|
|
20.09.2016, 17:08 [ТС] | 5 |
А когда применение std::forward оправдано?
0
|
13890 / 7424 / 1761
Регистрация: 30.01.2014
Сообщений: 12,420
|
|
20.09.2016, 17:13 | 6 |
0
|
![]() |
|
20.09.2016, 17:14 | 7 |
Когда нужно передать аргумент вызываемой функции в таком виде, в каком он попал в вызывающую.
0
|
20.09.2016, 17:14 | |
Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь. Не воспринимает ни std::cout, ни std::cin. Вобщем ничего из std. Также не понимает iostream ошибка error: cannot convert 'std::string {aka std::basic_string<char>}' to 'std::string* {aka std::basic_stri STL std::set, std::pair, std::make_pair
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |