
Alex Фэils?︙
12.10.2018
17:12:27
смотря какой компилятор

Tim
12.10.2018
17:12:32
gcc тот же

Краб ходит E7
12.10.2018
17:12:44
Слава Си
ськам

Google

Tim
12.10.2018
17:12:53
испортил все ты

Alex Фэils?︙
12.10.2018
17:12:55
там один хрен эскобар

Т-34
12.10.2018
17:14:15

Tim
12.10.2018
17:14:42
ща подумаю

Alejandro
12.10.2018
17:15:02

Tim
12.10.2018
17:15:10
Вообще поясни за эту оптимизацию
я может ее не понял до конца

Краб ходит E7
12.10.2018
17:16:02
пока...

Т-34
12.10.2018
17:16:34
покажи тесты
ну, гуглится же легко. Первая попавшаяся https://benchmarksgame-team.pages.debian.net/benchmarksgame/faster/c.html

Tim
12.10.2018
17:16:49
ахуеть
он довольно значительно дерет
думаю дело в том что в с++ тестах юзают громоздкие цппшные либы

Google

Alex Фэils?︙
12.10.2018
17:17:26
ахаха
в @procxx разбирали эти т.н. "тесты"

Tim
12.10.2018
17:17:42
Так я понял про эту оптимизацию
по идее она должна быть в сях
когда функция возвращает значение структуры

Alex Фэils?︙
12.10.2018
17:20:20
https://t.me/ProCxx/232479
можно начать отсюда
там замечательный тред об адекватности этих тестов
ськам
был веселый стикер в паке "ИТМО" на эту тему

Краб ходит E7
12.10.2018
17:21:09
Пак?

Т-34
12.10.2018
17:21:54

Tim
12.10.2018
17:22:14
Значит я ее правильно понял
Это например когда
есть функция
struct Huj test();
и она перобразуется как huj(struct Huj*)

Т-34
12.10.2018
17:22:42

Alex Фэils?︙
12.10.2018
17:22:51

Tim
12.10.2018
17:23:26

Google

Alex Фэils?︙
12.10.2018
17:23:30
Copy elision - Wikipedia
en.wikipedia.org
In C++ computer programming, copy elision refers to a compiler optimization technique that eliminates unnecessary copying of objects. The C++ language standard generally allows implementations to perform any optimization, provided the resulting program's observable behavior is the same as if...

Т-34
12.10.2018
17:25:14

Alex Фэils?︙
12.10.2018
17:25:30

Tim
12.10.2018
17:26:48
непонятно, что вы хотели сказать
Вместо возвращения новой структуры, будет передаваться функции ссылка на эту структуру, которая будет обрабатываться такими же подобными функциями. Как-то так.

Т-34
12.10.2018
17:28:22

Tim
12.10.2018
17:29:49
Создает не в стеке функции этот объект, на который уже ссылается, видимо

Alex Фэils?︙
12.10.2018
17:31:34
когда ты пойнтер на объект сам передаешь, и оно пишет туда сразу
еще можно на godbolt.org проверить

Т-34
12.10.2018
17:33:23

Alex Фэils?︙
12.10.2018
17:33:39
д

Tim
12.10.2018
17:34:24

Т-34
12.10.2018
17:36:04
а, ну так это я и сам могу делать. Вот move semantics бы по-умолчанию или какие-нибудь низкоуровневые оптимизации...

Tim
12.10.2018
17:36:51

Т-34
12.10.2018
17:37:11
в крестах могут автогенериться конструкторы перемещения, а вот в сях всегда копирование...

Tim
12.10.2018
17:38:00

Alex Фэils?︙
12.10.2018
17:38:29
пойнтер скопировать

Т-34
12.10.2018
17:39:09
ну, скажем, для структур МЕНЯТЬ все поля-указатели местами при присваивании, остальное - копировать

Google

Т-34
12.10.2018
17:39:39
а нет, это своп будет
ну, тогда тупо присваеваемому указателю дать адрес, а исходному - nullptr

Tim
12.10.2018
17:40:28

Т-34
12.10.2018
17:42:02
вроде так и делается.
а, ну да. Тогда проблема получается только в контейнерах? Хотя, в сях нет никаких контейнеров, кроме статических массивов

Tim
12.10.2018
17:42:32
В сях надо самому писать все структуры данных.

Т-34
12.10.2018
17:43:28

Tim
12.10.2018
17:43:49
Они же в std::namespace, нет?

Т-34
12.10.2018
17:44:08
в си нет namespace

Tim
12.10.2018
17:44:21
А, ты про си.
Но в си нет встроенных этих листов да аррэев потому что объектов просто нет. Единственное, возможно иметь в структуре указатель на функцию и таким образом имитировать ООП.

Т-34
12.10.2018
17:45:24

Tim
12.10.2018
17:47:16
зато есть структуры, экземпляры структур и указатели (в т.ч. на функцию)
Впринципе, насколько я знаю в С++ объектная система основана на том, что создаются при создании обхекта две структуры - структура с указателями на функцию и с данными, так что весь ООП описан у них сишными методами => можно писать на си в стиле объектном (правда запарно это немного и зачастую не надо).

Т-34
12.10.2018
17:47:17
а где в std используется ООП? Я там только перегрузку видел. Но во-первых, можно и без неё прожить, а во-вторых, в C11 есть _Generic

Tim
12.10.2018
17:47:51

Т-34
12.10.2018
17:49:22

Alex Фэils?︙
12.10.2018
17:50:00

Т-34
12.10.2018
17:50:12
там беда не столько в ооп, сколько в шаблонах

Alex Фэils?︙
12.10.2018
17:50:22


FailsBot
12.10.2018
17:50:23
Search results for "iostream"
1. <iostream>
2. std::iostream
3. std::istream
4. std::ostream::beg
5. std::ostream::cur
6. std::ostream::end
7. std::ostream::hex
8. std::ostream::oct
9. std::ostream::put
10. std::ostream::Init
11. std::ostream::left
12. std::ostream::swap
13. std::basic_iostream
14. std::ostream::clear
15. std::ostream::event
16. std::ostream::fixed
17. std::ostream::right
18. std::ostream::tellp
19. std::ostream::write
20. std::ostream::badbit
21. std::ostream::eofbit
22. std::ostream::skipws
23. std::ostream::failbit
24. std::ostream::goodbit
25. std::ostream::iostate
26. std::ostream::ostream
27. std::ostream::seekdir
Search results for "iostream" (Page 2)
28. std::ostream::showpos
29. std::ostream::unitbuf
30. std::ostream::internal
31. std::ostream::showbase
32. std::ostream::~ostream
33. std::ostream::basefield
34. std::ostream::boolalpha
35. std::ostream::set_rdbuf
36. std::ostream::showpoint
37. std::ostream::uppercase
38. std::ostream::floatfield
39. std::ostream::operator<<
40. std::ostream::scientific
41. std::ostream::adjustfield
42. std::ostream::erase_event
43. std::ostream::imbue_event
44. std::ostream::copyfmt_event

Google

Alex Фэils?︙
12.10.2018
17:50:38

Tim
12.10.2018
17:50:39

Т-34
12.10.2018
17:50:47
хотя, есть же void*, так что можно забить на шаблоны

Alex Фэils?︙
12.10.2018
17:50:54
плохая идея
функции тебе линкер статически слинкует
вообще рекомедую какую-н. базовую книжку по крестам почитать, там это поясняется

Tim
12.10.2018
17:52:11

Alex Фэils?︙
12.10.2018
17:52:11
ща могу скмнуть из своей книгопомойки

Tim
12.10.2018
17:52:42

Alex Фэils?︙
12.10.2018
17:52:47

Tim
12.10.2018
17:52:51
Спасибо

Т-34
12.10.2018
17:53:09

Alex Фэils?︙
12.10.2018
17:53:11
у Си-каста семантика слишком перегружена, он себя ведет как эти 4 вещи сразу, поэтому с ним часто ошибаются

Т-34
12.10.2018
17:54:09
4? Вроде больше