|
move конструктор и инициализация {}
|
|||
---|---|---|---|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59.
Вывод программы: Код: plaintext 1. 2. 3. 4. 5. 6. 7.
Как можно модифицировать код, чтобы и при инициализации 3м способом не вызывался конструктор копирования? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.10.2019, 15:00 |
|
move конструктор и инициализация {}
|
|||
---|---|---|---|
#18+
Собирать с -O3 пробовал? Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
04.10.2019, 15:24 |
|
move конструктор и инициализация {}
|
|||
---|---|---|---|
#18+
begin and end for initializer_list return const T *, so the result of move in your code is T const && — an immutable rvalue reference. Such an expression can't meaningfully be moved from. It will bind to an function parameter of type T const & because rvalues do bind to const lvalue references, and you will still see copy semantics. https://stackoverflow.com/questions/8193102/initializer-list-and-move-semantics ... |
|||
:
Нравится:
Не нравится:
|
|||
04.10.2019, 15:29 |
|
move конструктор и инициализация {}
|
|||
---|---|---|---|
#18+
Cerebrum, спасибо. Dimitry Sibiryakov, с О3 не пробовал. Пробовал на MS VS 2015 и в онлайне. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.10.2019, 15:42 |
|
move конструктор и инициализация {}
|
|||
---|---|---|---|
#18+
Даже после прочтения Мейерса до конца не разобрался с семантикой перемещения с этими универсальными ссылками, rvalue и lvalue. Но мне казалось нельзя применить семантику перемещения даже от "константы", не то что initializer_list от "констант". Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
Код: plaintext 1. 2. 3. 4.
... |
|||
:
Нравится:
Не нравится:
|
|||
04.10.2019, 15:54 |
|
move конструктор и инициализация {}
|
|||
---|---|---|---|
#18+
AmKadНо мне казалось нельзя применить семантику перемещения даже от "константы", не то что initializer_list от "констант". для константы нельзя, но 4 - это не простая константа, это, в первую очередь, - лексема ... |
|||
:
Нравится:
Не нравится:
|
|||
04.10.2019, 16:03 |
|
move конструктор и инициализация {}
|
|||
---|---|---|---|
#18+
Cerebrumно 4 - это не простая константа, это, в первую очередь, - лексемаЯ взял слово константа в кавычки с тем умыслом, что, как мне кажется, операция перемещения подразумевает возможность/необходимость покопаться скальпелем в кишках перемещаемого объекта. Константа же, как и лексема, как мне кажется, такой возможности не подразумевают. Поправьте меня, если я не прав. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.10.2019, 16:07 |
|
move конструктор и инициализация {}
|
|||
---|---|---|---|
#18+
Хотя, скорее всего, я кое-что напутал. Лексема здесь - не объект, а всего лишь параметр конструктора. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.10.2019, 16:14 |
|
move конструктор и инициализация {}
|
|||
---|---|---|---|
#18+
Cerebrumно 4 - это не простая константаЭто вообще не константа. Тип выражения `4` — `int`. Не `const int`. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2019, 02:24 |
|
move конструктор и инициализация {}
|
|||
---|---|---|---|
#18+
Вспомнил, откуда взялся эксперимент. Смотрел лекцию [spoiler] ... |
|||
:
Нравится:
Не нравится:
|
|||
08.10.2019, 22:13 |
|
|
start [/forum/topic.php?fid=57&fpage=11&tid=2017559]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
29ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
58ms |
get tp. blocked users: |
1ms |
others: | 258ms |
total: | 386ms |
0 / 0 |