Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Visual Stuido - как запретить использовать конструктор перемещения
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovAnatoly Moskovskyсинтаксиса инициализации дефолтным конструктором нет egorychубери конструктор Эта... Я чего-то не понимаю: нет синтаксиса инициализации несуществующим конструктором?.. если у тебя в классе нет ни одного конструктора, то компилятор тебе создаст конструктор по умолчанию... но в нём POD-данные не будут инициализированы, такая вот фигня )) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2014, 21:15 |
|
||
|
Visual Stuido - как запретить использовать конструктор перемещения
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovЭта... Я чего-то не понимаю: нет синтаксиса инициализации несуществующим конструктором?.. Вообще это называется default initialization (инициализация по умолчанию). Слово конструктор там лишнее. Для синтаксиса Код: plaintext 1. инициализация по умолчанию производится путем вызова конструктора, при условии что у класса или его полей есть конструкторы, т.е. только для не-POD. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2014, 21:17 |
|
||
|
Visual Stuido - как запретить использовать конструктор перемещения
|
|||
|---|---|---|---|
|
#18+
Ну и для полноты картины: для синтаксиса Код: plaintext 1. инициализация по умолчанию производится путем вызова конструктора для не-POD или нулями для POD. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2014, 21:23 |
|
||
|
Visual Stuido - как запретить использовать конструктор перемещения
|
|||
|---|---|---|---|
|
#18+
Anatoly MoskovskyНу и для полноты картины: для синтаксиса Код: plaintext 1. инициализация по умолчанию производится путем вызова конструктора для не-POD или нулями для POD.а в С++11 это будет работать, или надо переписывать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2014, 21:26 |
|
||
|
Visual Stuido - как запретить использовать конструктор перемещения
|
|||
|---|---|---|---|
|
#18+
egorych, Конечно будет, все обратно совместимо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2014, 21:27 |
|
||
|
Visual Stuido - как запретить использовать конструктор перемещения
|
|||
|---|---|---|---|
|
#18+
Anatoly Moskovskyegorych, Конечно будет, все обратно совместимо.спасибо )) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2014, 21:43 |
|
||
|
Visual Stuido - как запретить использовать конструктор перемещения
|
|||
|---|---|---|---|
|
#18+
Есть еще нюансы (но все укладывается в вышесказанное). Запощу пару примеров :) Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2014, 21:46 |
|
||
|
Visual Stuido - как запретить использовать конструктор перемещения
|
|||
|---|---|---|---|
|
#18+
Чёрт, слишком стар я для этих подвыподвертов... Лучше уж останусь у одскульного "всё, что не инициализировано явно - не инициализировано вообще". Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2014, 21:48 |
|
||
|
Visual Stuido - как запретить использовать конструктор перемещения
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovЧёрт, слишком стар я для этих подвыподвертов... Лучше уж останусь у одскульного "всё, что не инициализировано явно - не инициализировано вообще". +1, так проще, и правильней ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2014, 21:52 |
|
||
|
Visual Stuido - как запретить использовать конструктор перемещения
|
|||
|---|---|---|---|
|
#18+
В С++11 все на самом деле проще :) Код: plaintext 1. 2. 3. 4. 5. И все инициализируется всегда :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2014, 21:58 |
|
||
|
Visual Stuido - как запретить использовать конструктор перемещения
|
|||
|---|---|---|---|
|
#18+
MozokAnatoly 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-конструктора просто не будет. По крайней мере, в VS такой подход не работает. Move-ctor генерится автоматически. Студия не позволяет его не использовать (если считает, что он нужен) :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2014, 03:38 |
|
||
|
Visual Stuido - как запретить использовать конструктор перемещения
|
|||
|---|---|---|---|
|
#18+
tolyanchikПо крайней мере, в VS такой подход не работает. Move-ctor генерится автоматически. Студия не позволяет его не использовать (если считает, что он нужен) :) Т.е. если вы объявляете move-к-тор, то он вызывается (и это подтвержается отладочной печатью)? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2014, 04:10 |
|
||
|
Visual Stuido - как запретить использовать конструктор перемещения
|
|||
|---|---|---|---|
|
#18+
Anatoly Moskovsky Перепроверил - нет, почему-то move-ctor не вызывается (но и без него не хочет рабоать) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2014, 04:31 |
|
||
|
Visual Stuido - как запретить использовать конструктор перемещения
|
|||
|---|---|---|---|
|
#18+
tolyanchikПерепроверил - нет, почему-то move-ctor не вызывается (но и без него не хочет рабоать) Теперь осталось выяснить что такое "не хочет работать". Как вы определяете что не работает? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2014, 04:33 |
|
||
|
Visual Stuido - как запретить использовать конструктор перемещения
|
|||
|---|---|---|---|
|
#18+
Теперь это выглядит совершенно бредово:) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2014, 04:35 |
|
||
|
Visual Stuido - как запретить использовать конструктор перемещения
|
|||
|---|---|---|---|
|
#18+
В вашем коде из-за RVO может вообще не требоваться копирование. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2014, 04:36 |
|
||
|
Visual Stuido - как запретить использовать конструктор перемещения
|
|||
|---|---|---|---|
|
#18+
[img=] ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2014, 04:38 |
|
||
|
Visual Stuido - как запретить использовать конструктор перемещения
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2014, 04:39 |
|
||
|
Visual Stuido - как запретить использовать конструктор перемещения
|
|||
|---|---|---|---|
|
#18+
Тогда возникает вопрос, почему не компилит совершенно тривиальный код, ведь достаточно вызвать обычный конструктор копирования. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2014, 04:40 |
|
||
|
Visual Stuido - как запретить использовать конструктор перемещения
|
|||
|---|---|---|---|
|
#18+
tolyanchik, Потому что private функции недоступны извне класса :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2014, 04:43 |
|
||
|
Visual Stuido - как запретить использовать конструктор перемещения
|
|||
|---|---|---|---|
|
#18+
Согласно стандарту, при проведении оптимизаций компилятор дожен выдавать ошибки, которые были бы если бы оптимизации не было. В частности без RVO было бы копирование перемещением из временной переменной, а оно у вас private ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2014, 04:46 |
|
||
|
Visual Stuido - как запретить использовать конструктор перемещения
|
|||
|---|---|---|---|
|
#18+
Это понятно, но если удалить move-ctor, обычный copy-ctor всё равно не вызывается. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2014, 04:48 |
|
||
|
Visual Stuido - как запретить использовать конструктор перемещения
|
|||
|---|---|---|---|
|
#18+
Короче, вам надо удалить move-ctor и все. При этом в зависимости от оптимизаций либо будет вызываться copy-ctor либо ничего. Никакой move-ctor не генерится если объявлен copy-ctor. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2014, 04:49 |
|
||
|
Visual Stuido - как запретить использовать конструктор перемещения
|
|||
|---|---|---|---|
|
#18+
tolyanchikЭто понятно, но если удалить move-ctor, обычный copy-ctor всё равно не вызывается. Я же вам написал - это оптимизация RVO ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2014, 04:50 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=38826851&tid=2019194]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
58ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
60ms |
get tp. blocked users: |
1ms |
| others: | 15ms |
| total: | 171ms |

| 0 / 0 |
