@ProCxx

Страница 997 из 2477
Azoyan
22.06.2017
14:47:10
Да там только три поля инта

Anatoly
22.06.2017
14:48:07
и как это коррелирует с вопросом о продлении жизни временного объекта

Azoyan
22.06.2017
14:48:10
Ну я вот сейчас смотрел ассемблерный код без оптимизаций он идентичен

Google
Azoyan
22.06.2017
14:48:47
Я имел ввиду, что можно создать не временный объект. Это будет дешевле

Anatoly
22.06.2017
14:49:10
Ну я вот сейчас смотрел ассемблерный код без оптимизаций он идентичен
Point p = Point(), - здесь вызов копирующего конструктора, который убран компилятором и оставлено только конструирования

Azoyan
22.06.2017
14:52:42
то же самое, компилятор гарантирует это
Получается какой смысл от temporary lifetime extension?

Constantine
22.06.2017
14:55:27
не знаю, не бага ли это MSC, но Some object = <expression> не отработает, если Some(decltype(<expression>)) помечен как explicit

Berkus
22.06.2017
14:55:31
https://dl.dropboxusercontent.com/s/wblfh4pwouyybxj/2017-06-22%20at%2017.55.png сахарок-сахарок )

Constantine
22.06.2017
15:00:11
Point p = Point(), - здесь вызов копирующего конструктора, который убран компилятором и оставлено только конструирования
Не знаю, есть ли смысл считать, что это copy elision вообще, хотя номинально стандарт так и считает

Anatoly
22.06.2017
15:26:57
здесь, мне кажется, расжевали это момент http://en.cppreference.com/w/cpp/language/copy_elision

Notes Copy elision is the only allowed form of optimization (until C++14)one of the two allowed forms of optimization, alongside allocation elision and extension, (since C++14) that can change the observable side-effects. Because some compilers do not perform copy elision in every situation where it is allowed (e.g., in debug mode), programs that rely on the side-effects of copy/move constructors and destructors are not portable. Except where noted above, even when copy-elision takes place and the copy-/move-constructor is not called, it still must be present and accessible (as if no optimization happened at all), otherwise the program is ill-formed.

Constantine
22.06.2017
15:29:36
действительно так, забавно

я всегда был уверен, что конструкция, похожая на присваивание в инициализации, просто воспринимается компилятором как инициализация

Александр
22.06.2017
15:32:11
https://wandbox.org/permlink/hH4Yex2ASPrzIAb0

сравните результат для C++14 и C++17

Google
Александр
22.06.2017
15:32:30
наглядно очень

Anatoly
22.06.2017
15:34:05
это был дефект компилятора, который игнорировал запрещение копирования

по-моему я в MSVC встречал это

soul.greed
22.06.2017
15:55:41
Ребята кто может помочь

Berkus
22.06.2017
15:57:05
если каждые 5-6 часов повторять эту тему будет круто

Anatoly
22.06.2017
15:57:24
тебе уже помогли, ты теперь делаешь вид, что все в порядке вещей

Lazy Ghost ‮ ‮
22.06.2017
15:57:56
не подскажите как поменять кодировку текста в CLR?

soul.greed
22.06.2017
16:02:29
Ребята у меня в коде ошибка как ее решить можно быть дело в компиляторе

?

Vlad
22.06.2017
16:02:54
это был дефект компилятора, который игнорировал запрещение копирования
здесь же нет копирования, похоже на баг в версии с с++14. или нет?

Anatoly
22.06.2017
16:04:01
здесь же нет копирования, похоже на баг в версии с с++14. или нет?
T c = T(); // не смотря на то, что компилятор опускает вызов конструктора копирования, он должен детектить его отсутствие

T c = T() - полная цепочка ctor + copyctor

Constantine
22.06.2017
16:07:51
по-моему я в MSVC встречал это
я проверил, если написать в MSC 14 struct Some { Some() = default; Some(Some const&) = delete; }; void f() { Some object = Some(); //CE }

Anatoly
22.06.2017
16:08:20
по-моему это было VS 2010

значит починили

Constantine
22.06.2017
16:08:39
ну copy elision возврата функции работал еще в VS 2003

у нас на это был тест и жесткая завязка

Anatoly
22.06.2017
16:10:19
я не о работе copy ellision, а о детекте отсутствия копирующего конструктора

Google
Anatoly
22.06.2017
16:10:32
в этом был дефект

Constantine
22.06.2017
16:10:34
а, это лень проверять)

не очевидно, почему эта конструкция не признается равнозначной вызову конструктора с точностью до explicit

как я понимаю, проверка делается на существование copy или move конструктора

после чего он не вызывается)

Anatoly
22.06.2017
16:12:28
да

поскольку если бы не было copy ellission была бы полная цепочки - дефолтный конструктор + конструктор копирования

Anatoly
22.06.2017
16:14:18
ну или move конструктор

Constantine
22.06.2017
16:15:25
т.е. обязательный copy elision без проверок

Group Butler [beta]
22.06.2017
16:15:31
soul.greed has been warned (1/5)

Дед Пегас
22.06.2017
16:19:03
Да он норкмоман.

Владислав
22.06.2017
16:19:05
ну с вероятностью 99.99999999999999999999999% это ты где-то проебался, лол

Constantine
22.06.2017
16:23:56
ну с вероятностью 99.99999999999999999999999% это ты где-то проебался, лол
много девяток, я слышал примерно про десяток багов компилятора за все время)

самый эпический - баг в реализации SeekEoln в Delphi 7, которая всегда возвращала false с позиции, делящейся на 0x80

Vladislav
22.06.2017
16:42:03
самый эпический - баг в реализации SeekEoln в Delphi 7, которая всегда возвращала false с позиции, делящейся на 0x80
Ещё в турбопаскале был, когда бинарник на слишком быстрых процессорах крешится

Да он норкмоман.
Ещё бы, норки - мимими

Constantine
22.06.2017
16:50:37
Ещё в турбопаскале был, когда бинарник на слишком быстрых процессорах крешится
Просто эпичность в том, что ребята написали на асме функции, чтобы быстрее работало, и не использовали именованные константы

Google
Constantine
22.06.2017
16:50:58
Поэтому вычитывали не тот флаг при дочитывании кэша

Andrei
22.06.2017
18:48:21
много девяток, я слышал примерно про десяток багов компилятора за все время)
Дважды за год сталкивался с багами компилятора/стдлибы

Причем именно багами, злобными, проявляющимися в рантайме.

Alexander
22.06.2017
18:49:14
ссылочки*

Admin
ERROR: S client not available

Andrei
22.06.2017
18:50:03
Один в CL.exe от 2013 студии, там никакого багрепорта по понятным причинам.

Второй в стдлибе кланга/эппловской имплементации pthread-ов.

Соответствующий репорт был отправлен в эппл, и была переписка там.

Тоже по понятным причинам не могу показать.

Потому что не публичный.

/dev
22.06.2017
19:06:34
много девяток, я слышал примерно про десяток багов компилятора за все время)
RHEL6 (которая ещё поддерживается) поставляется с glibc 2.12, где malloc может себя дедлочить кривым спинлоком при нагрузке в 16 тредов. Ловил недавно.

Владислав
22.06.2017
19:14:50
Я утрировал, конечно, но в любом случае, я уверен, что в подовляющем большинстве случаев, когда программист начинает думать, что это баг компилятора, в итоге оказывается, что это его собственная ошибка

Constantine
22.06.2017
19:24:44
Бага выбора языка же

Владислав
22.06.2017
19:26:53
о чём ты?

Constantine
22.06.2017
19:27:35
Будь проклят тот день, когда я написал std::cout << "Hello, world!" << std::endl;

Владислав
22.06.2017
19:28:15
мне просто java слишком сложной показалась, поэтому я пишу на плюсах

Arseny
22.06.2017
19:29:09
Владислав
22.06.2017
19:29:41
ну рил же сложнее

Constantine
22.06.2017
19:30:23
#holywar

Google
Group Butler [beta]
22.06.2017
19:30:24
#holywar
С таким заявлением вам лучше сюда: pro.cxx.holywars

Владислав
22.06.2017
19:30:53
я не холивара ради :)

Constantine
22.06.2017
19:31:26
я почти разобрался в С++98 за десять лет разработки :)

теперь стандарты печатают быстрее, чем я успеваю заклеивать дыры в собственной ноге

Berkus
22.06.2017
19:32:23
я почти разобрался в С++98 за десять лет разработки :)
но за эти десять лет он превратился в с++11 и всё опять переделывать!

Constantine
22.06.2017
19:33:03
для стандарта 98 у меня были бронированные ботинки

desu
22.06.2017
19:33:13
а типа простреливать себе ногу.)

Constantine
22.06.2017
19:33:15


desu
22.06.2017
19:33:31
я прострелил голову и сдался

пишу на шарпе

;)

Asyan です
22.06.2017
19:33:43
какой же чухан справа.

Страница 997 из 2477