
/dev
03.04.2017
14:19:57

Michael
03.04.2017
14:20:26
в супапро помимо этого наверняка много вопросов которые еще ниже
кстати зайду я туда может сам смогу чем-то помочь чувакам
ну вот такого типа

Google

Michael
03.04.2017
14:21:10
Можете подсказать какие библиотеки важны в с++ и какие стоит изучить в первую очередь
вот поэтому лучше тут чем не тут.
у меня хотя бы вопросы конкретные...

Anatoly
03.04.2017
14:22:54

Michael
03.04.2017
14:23:13
я привел это как пример тупого вопроса

Anatoly
03.04.2017
14:23:39
сорри, не понял

Michael
03.04.2017
14:23:47
не за что
кстати мнения немножко разделились
вот Андрей считает что мув надо указывать эксплсит если это важно. (но рво и так позаботится)
ты считаешь, что можно не паритсья, и точно позаботится
что так или иначе произойдет или рво, или мув

Tema
03.04.2017
14:26:10

Anatoly
03.04.2017
14:26:13
return value optimization - это оптимизация, которую компилятор МОЖЕТ сделать

Google

Michael
03.04.2017
14:26:23
да, но вот вопрос
насколько часто он делает на практике?

babysitter
03.04.2017
14:26:30

Tema
03.04.2017
14:26:46

Michael
03.04.2017
14:26:48
инлайн - тоже операция, которую компилятор МОЖЕТ сделать, но это же не повод форсинлайнить все вручную

Anatoly
03.04.2017
14:26:51
std::move явно здесь не нужен

Michael
03.04.2017
14:26:55

Tema
03.04.2017
14:27:18
я бы вообще не парился и делал всё в на куче

Anatoly
03.04.2017
14:27:32
поскольку myFunc возвращает временный объект, который подходит под vector&&

Artem
03.04.2017
14:27:36
http://stackoverflow.com/a/17473869

Michael
03.04.2017
14:27:37
окей, это тот самый ответ который я хотел слышать

Tema
03.04.2017
14:27:37
и заворачивал в уник поинторы
и бед не знал бы

Surreal
03.04.2017
14:27:43
а как нужно?
Вы таким образом явно убиваете возможность rvo, которое быстрее move.

Michael
03.04.2017
14:28:16
компилятор не дедуцирует, что мув нафиг не нужен и не поступает по-своему?
я вот почему-то думаю, что должен

Andrei
03.04.2017
14:28:30
При этом надо делать

Anatoly
03.04.2017
14:28:48
само собой

Google

Michael
03.04.2017
14:29:01
что вообще из себя представляет вызов std::move()?
это враппер или абстракция компилятора?

Surreal
03.04.2017
14:29:11

Andrei
03.04.2017
14:29:15

Michael
03.04.2017
14:29:23
понял

Anatoly
03.04.2017
14:29:40
это заставляет компилятор перенести состояние одного объекта в другой
после std::move(object) object уже не будет владеть состоянием, которым владел до мува

babysitter
03.04.2017
14:30:29
Погодите, что за бред. Какой return std::move(); для локального вектора.

Michael
03.04.2017
14:30:37
в общем, в моем конкретном случае мне стоит не громоздить и полагаться на RVO до тех пор, пока профайлинг не скажет, что это, чувак, было плохо

babysitter
03.04.2017
14:30:47
Приеду майерса открою.

Anatoly
03.04.2017
14:30:49
локальй вектор и std::move
нормально

babysitter
03.04.2017
14:31:20
Просто возврат по значению хорошо сработать должен.

Michael
03.04.2017
14:31:37
блин, какая интересная тема
вопрос из основ, а мнений минимум два
а нет, три точно есть

Surreal
03.04.2017
14:32:19
Потому что реализация не стандартизована.

Anatoly
03.04.2017
14:32:41
локальный объект != временный

Andrei
03.04.2017
14:33:06

Google

Tema
03.04.2017
14:33:09
что плохого если он зделает данные в куче и вернёт уник поинтор?
мувнет
это пижже рво?

Andrei
03.04.2017
14:33:17
return std::move(vec); не будет

Michael
03.04.2017
14:33:24
сейчас задался вопросом могу ли я не городить в кучу и вернуть значение
отсюда и вопрос

Surreal
03.04.2017
14:33:47

babysitter
03.04.2017
14:34:10

Tema
03.04.2017
14:34:13

Surreal
03.04.2017
14:34:30

Andrei
03.04.2017
14:34:41

Tema
03.04.2017
14:34:41

Andrei
03.04.2017
14:34:44
Никто не спорит.

Surreal
03.04.2017
14:34:49
при rvo у вас передается указатель в стек фрейм вызова и все.

Andrei
03.04.2017
14:35:14
Я просто говорю, что можно зафорсить move.
Вот таким способом.
А так да, конечно RVO это круто.

babysitter
03.04.2017
14:35:53
Зафорсить можно, но не нужно.

Andrei
03.04.2017
14:35:58
Иногда нужно.

Google

Michael
03.04.2017
14:36:11
кстати если конкретнее то я возвращаю не вектор
я возвращаю map map'ов
вопрос: все еще никаких осложнений?

Anatoly
03.04.2017
14:36:33
все нормально

babysitter
03.04.2017
14:36:44
Если возможно, то будет копи элижн и это хорошо, если невозможно без всяких мув будет мув-конструктор.

Andrei
03.04.2017
14:36:46
Покуда он у тебя на локальном стеке был создан — всё ок.

Michael
03.04.2017
14:36:46
ну вот и мне показалос. контейнер он и есть контейнер

Andrei
03.04.2017
14:37:07
Если он создан на стеке глубже — уже не факт.

Michael
03.04.2017
14:37:47
из скоупа в скоуп

Andrei
03.04.2017
14:38:04
Но это всё равно не избавляет от надобности написать move или copy конструктор, не смотря на то, что он даже не вызывается.

Anatoly
03.04.2017
14:38:11

Michael
03.04.2017
14:38:22

Andrei
03.04.2017
14:38:24

babysitter
03.04.2017
14:38:34

Andrei
03.04.2017
14:39:19
Из одной функции точно будет.

Michael
03.04.2017
14:39:38
ну, как я понимаю, там может оказаться имплисит мув рано или поздно
если коллстек глубоко
что в общем-то тоже неплохо

Andrei
03.04.2017
14:40:25