Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Visual Stuido - как запретить использовать конструктор перемещения
|
|||
|---|---|---|---|
|
#18+
Не то чтобы это было проблемой, но просто непонятно. Если move-constructor положить в приват - не компилит. Хотя мог бы юзать обычный copy-constructor. Может есть опция по отключению C++11? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2014, 18:45 |
|
||
|
Visual Stuido - как запретить использовать конструктор перемещения
|
|||
|---|---|---|---|
|
#18+
tolyanchik, Объяви конструктор с соотв. сигнатурой и снабди ключевым словом "delete". http://ru.cppreference.com/w/cpp/language/move_constructor ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2014, 19:53 |
|
||
|
Visual Stuido - как запретить использовать конструктор перемещения
|
|||
|---|---|---|---|
|
#18+
Не помогает: Error C2280: 'Foo::Foo(Foo &&)' : attempting to reference a deleted function ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2014, 21:16 |
|
||
|
Visual Stuido - как запретить использовать конструктор перемещения
|
|||
|---|---|---|---|
|
#18+
tolyanchik, Приведите код. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2014, 00:33 |
|
||
|
Visual Stuido - как запретить использовать конструктор перемещения
|
|||
|---|---|---|---|
|
#18+
Anatoly Moskovsky, Код: 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. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2014, 00:35 |
|
||
|
Visual Stuido - как запретить использовать конструктор перемещения
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2014, 00:38 |
|
||
|
Visual Stuido - как запретить использовать конструктор перемещения
|
|||
|---|---|---|---|
|
#18+
tolyanchik, В GCC тоже самое. Пока не врубаюсь почему ошибка. Вот сокращенный до минимума код, где повторяется ошибка, может кто-то увидит что-то очевидное. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2014, 01:07 |
|
||
|
Visual Stuido - как запретить использовать конструктор перемещения
|
|||
|---|---|---|---|
|
#18+
Anatoly Moskovsky Код: sql 1. 2. 3. 4. А скажите пожалуйста, что вот этот код должен сделать? Я тут вижу создание объекта, потом еще одно создание, потом копирование. А что в свете новых веяний должно быть? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2014, 04:37 |
|
||
|
Visual Stuido - как запретить использовать конструктор перемещения
|
|||
|---|---|---|---|
|
#18+
White Owl Копирующего присваивания здесь нет. Это вызов копирующего конструктора. В с++11 может быть заменен вызовом move-конструктора, т.к. справа временный объект. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2014, 06:28 |
|
||
|
Visual Stuido - как запретить использовать конструктор перемещения
|
|||
|---|---|---|---|
|
#18+
похожее обсуждение на стаке How to allow copy elision construction for C++ classes ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2014, 08:52 |
|
||
|
Visual Stuido - как запретить использовать конструктор перемещения
|
|||
|---|---|---|---|
|
#18+
White OwlAnatoly Moskovsky Код: sql 1. 2. 3. 4. А скажите пожалуйста, что вот этот код должен сделать? Я тут вижу создание объекта, потом еще одно создание, потом копирование. Согласно стандарту (не только новому но и всем предыдущим), это инициализация объявленного объекта, а не копирование временного в объявленный. Но компилятору никто не запрещает и создать временный объект и копировать его в объявленный. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2014, 13:20 |
|
||
|
Visual Stuido - как запретить использовать конструктор перемещения
|
|||
|---|---|---|---|
|
#18+
Anatoly MoskovskyСогласно стандарту (не только новому но и всем предыдущим), это инициализация объявленного объекта, а не копирование временного в объявленный. Но выглядит это как инициализация одного объекта другим объектом. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2014, 13:36 |
|
||
|
Visual Stuido - как запретить использовать конструктор перемещения
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovAnatoly MoskovskyСогласно стандарту (не только новому но и всем предыдущим), это инициализация объявленного объекта, а не копирование временного в объявленный. Но выглядит это как инициализация одного объекта другим объектом. RVO же, замучаешься его отключать, если зачем то приспичит )) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2014, 13:52 |
|
||
|
Visual Stuido - как запретить использовать конструктор перемещения
|
|||
|---|---|---|---|
|
#18+
Anatoly Moskovsky Но компилятору никто не запрещает и создать временный объект и копировать его в объявленный. Пожалуй, всё-таки нельзя. Ну, или пусть делает это без вызова copy-assignment. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2014, 14:50 |
|
||
|
Visual Stuido - как запретить использовать конструктор перемещения
|
|||
|---|---|---|---|
|
#18+
Вот единственное, что хочется сказать: "понапридумывали" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2014, 15:43 |
|
||
|
Visual Stuido - как запретить использовать конструктор перемещения
|
|||
|---|---|---|---|
|
#18+
Классик Уважаемый редактор Может лучше про реактор? Про привычный лунный трактор! Ведь нельзя-же всё подряд! То тарелками пугають! Дескыть подлые летають! То у вас собаки лають. То руины говорят... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2014, 18:11 |
|
||
|
Visual Stuido - как запретить использовать конструктор перемещения
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovНо выглядит это как инициализация одного объекта другим объектом. Дело в том что другого синтаксиса инициализации дефолтным конструктором нет (точнее не было до C++11) :) Код: plaintext 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2014, 19:00 |
|
||
|
Visual Stuido - как запретить использовать конструктор перемещения
|
|||
|---|---|---|---|
|
#18+
Возвращаясь к исходному вопросу. Раз в GCC то же самое, то скорее всего такое поведение описано в стандарте (но я сам не искал где, т.к. нет времени). Раз такие дела, то просто реализуйте move-конструктор :) Никаких причин против использования move-конструкторов я не вижу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2014, 19:06 |
|
||
|
Visual Stuido - как запретить использовать конструктор перемещения
|
|||
|---|---|---|---|
|
#18+
Anatoly MoskovskyDimitry SibiryakovНо выглядит это как инициализация одного объекта другим объектом. Дело в том что другого синтаксиса инициализации дефолтным конструктором нет (точнее не было до C++11) :) Код: plaintext 1. 2. 3. 4. это чтож, весь старый код будет давать такой замечательный бэкграунд при переходе на С++11? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2014, 19:07 |
|
||
|
Visual Stuido - как запретить использовать конструктор перемещения
|
|||
|---|---|---|---|
|
#18+
egorychэто чтож, весь старый код будет давать такой замечательный бэкграунд при переходе на С++11? Получается, что если были copy-конструкторы, то надо реализовать и move-конструкторы, иначе будет использован дефолтный. Фигня какая-то. Надо почитать стандарт. Сам я пока на с++11 не пишу, поэтому не сталкивался с этой темой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2014, 19:19 |
|
||
|
Visual Stuido - как запретить использовать конструктор перемещения
|
|||
|---|---|---|---|
|
#18+
Anatoly Moskovsky Код: sql 1. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. Что я делаю неправильно? Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2014, 20:32 |
|
||
|
Visual Stuido - как запретить использовать конструктор перемещения
|
|||
|---|---|---|---|
|
#18+
Anatoly MoskovskyПолучается, что если были copy-конструкторы, то надо реализовать и move-конструкторы, иначе будет использован дефолтный. Фигня какая-то. Надо почитать стандарт. Сам я пока на с++11 не пишу, поэтому не сталкивался с этой темой. Не-а, не будет: ISO C++If the definition of a class X does not explicitly declare a move constructor, one will be implicitly declared as defaulted if and only if — X does not have a user-declared copy constructor, — X does not have a user-declared copy assignment operator, — X does not have a user-declared move assignment operator, — X does not have a user-declared destructor, and — the move constructor would not be implicitly defined as deleted. [ Note: When the move constructor is not implicitly declared or explicitly supplied, expressions that otherwise would have invoked the move constructor may instead invoke a copy constructor. —end note ] То есть, tolyanchik'у достаточно убрать Код: plaintext 1. И никакого move-конструктора просто не будет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2014, 20:33 |
|
||
|
Visual Stuido - как запретить использовать конструктор перемещения
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovЧто я делаю неправильно? Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. убери конструктор, собери в релизе, наслаждайся )) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2014, 20:44 |
|
||
|
Visual Stuido - как запретить использовать конструктор перемещения
|
|||
|---|---|---|---|
|
#18+
Anatoly Moskovskyсинтаксиса инициализации дефолтным конструктором нет egorychубери конструктор Эта... Я чего-то не понимаю: нет синтаксиса инициализации несуществующим конструктором?.. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2014, 20:48 |
|
||
|
Visual Stuido - как запретить использовать конструктор перемещения
|
|||
|---|---|---|---|
|
#18+
MozokТо есть, tolyanchik'у достаточно убрать Код: plaintext 1. И никакого move-конструктора просто не будет. Я примерно так и предполагал, но не видел что это работает. А теперь понял почему. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Тут я не видел вызова copy-ctor и думал что вместо него вызывался неявный move-ctor, а на самом деле тут просто ни copy-ctor ни move-ctor не вызываются, потому что есть только инициализация Foo() и никакого копирования вообще не происходит, как я выше сам и объяснял :) Таким образом действительно достаточно не объявлять move-ctor вообще, но объявить copy-ctor. Все, буду спать спокойно ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2014, 21:12 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=38826627&tid=2019194]: |
0ms |
get settings: |
9ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
54ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
55ms |
get tp. blocked users: |
1ms |
| others: | 302ms |
| total: | 447ms |

| 0 / 0 |
