Двач.hk не отвечает.
Вы видите копию треда, сохраненную 3 мая 2020 года.

Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
1566095557679.png196 Кб, 471x591
2 1608052
Палю годноту
изображение.png493 Кб, 843x1200
3 1608129
>>08052
А у меня такая есть.
4 1608355
Анон, нужно твое авторитетное мнение по поводу использования крестов в микроконтроллерах, например, какой-нибудь стмке 32.
С одной стороны, везде СИ блядь, драйвера, память нахуй с другой - кресты с их отличными плюсами, шаблонами там, абстракцией и всей хуйней. В реальных задачах на мк хорошо выделяется часть, которая железная и часть, в которой сама суть работы.
5 1608447
Сап, аноны, решил вычислить n-ое число pi. Нашел алгоритм типо вычисляющий n-th pi число с логарифмической сложностью, но я его походу реализовал через одно место, хз в чем трабл. Кто шарит, прошу помочь

Мой говнокод и алгоритм:
https://rentry.co/picomputation

П. С. Вычисляющий это число в десятичной системе, а не в шестднацатеричной как в формуле Бэйли — Боруэйна — Плаффа.
6 1608452
Единсвенное не понял какое выбрать n0, вроде для ошибки типо, т. е. чем больше, тем лучше, но результат меняется каждый раз довольно сильно
7 1608570
>>08447
Вангую что в статье log = log2, а ты используешь log = ln.
8 1608763
>>08447
Дебаггером пройдись, что ты как маленький
9 1608862
помогите пожилому вкатывальщику по книге страуструпа плз. 1) задача; 2) говнокод; 3) результат. Чо т я заебался уже, фигурные скобки во все места перебрал, либо одну 3 выводит с ошибкой, либо просто ошибку, либо ничего
main.png13 Кб, 442x358
10 1608910
>>08862
быстренько наговнокодил в блокнотике
11 1608953
https://github.com/lorentz-oh/tetris-p
Написал тетрис, зацените
12 1608979
>>08953

>> ncurses


зачем ты в это палочкой тыкаешь
13 1609004
Почему пакет для разработки на плюсах в студии весит ебаных 6 гб?
14 1609014
>>09004
ну там же написано, что современный и молодежный)
image.png49 Кб, 568x434
15 1609021
>>08910
чуть исправил, спасибо (у тебя p не из вектора берётся, поэтому он все числа подряд вывел)
16 1609038
>>09021
Ну так в задание же вроде сказано вывести все простые числа до 100
17 1609083
>>09021

>setlocale


Нахуя? Есть же wideutf16 строки без ебли с кодировками.
18 1609085
>>09083
да эти setlocale еще со времен мамонтов в примерах учебников висят, вот их и копируют везде
Screenshot2.png42 Кб, 758x480
19 1609182
Простите за тупой вопрос, но почему _itoa_s возвращает мне строку, где вначале мусор в виде 37777777, раньше такой же код у меня работал, теперь перед ответом добавляет этот мусор.
20 1609194
>>09021
Можно просто
vector primes {2};
for (int i = 3; i <= 100; ++i)
__if (find_if (begin(primes), end(primes), (int x){return i%x == 0; }) == end(primes) )
____primes.push_back(i);
21 1609196
>>09194
[code]
[](int x)
[/code]
квадратные скобки вакаба съела
22 1609216
>>09182
malloc в C++ до 20ого стандарт - undefined behavior. Выкинь и перепиши нормально.

И какие блять ITOA когда ты пишешь на С++ - либо from_chars, либо to_string
23 1609235
>>09194
найс функция find_if, жаль труп страуса ей не учит на этапе этой задачи, спасибо.
24 1609240
>>09235
Двачую, я когда анону картинку с решением кидал, то за auto еще терзал себя, что зря вписал, а он тут ему find_if предлагает))
25 1609253
>>09240
Ну так то да, у нас обычная практика обучения крестам - дать подмножество из си плюс основы ООП, хотя знание стл, какбэ тоже часть языка, хотя бы 99 стандарта даёт реальный буст производительности кодера, уровня абстракции и понятности кода.
А на 17 вообще сказка, заметили там наверху что вектору тип не нужно прописывать?
26 1609255
>>09196
[code]

[/code]
Захват переменной забыл
27 1609258
>>09253

>1) const в глобале = static const (только в C++)


Допустим у нас есть header.h: const int h = 5;
Если мы его включим в несколько .c файлов без защитных директив, то линковщик С выдаст multiply definition, а в С++ все скомплится на ура. А все потому, что в С++ h является локальной в каждом файле, куда подключен header. Если нужно использвать const int через extern, то при определении переменной, надо писать extern const int h= 5

>2) В C++ нет VLA.


int foo (size_t n, size_t m[n]); // Не скомплится в С++
Хотя не все комплиторы работающие с С11 могут в VLA, а вот для C99 поддерживать обязаны.

3) А еще в Си вместо темплейтов есть _Generic:
int print_int(int d) {
printf("%d\n", d);
}
#define print(d) _Generic((d), int: print_int)(d)
main() { print(123); }

4) Ну и конечно же Compound Literals. Онли С совместимый код белоу:
char foo = (char []) {"x", "y", "z"};
int i = ++(int){1};
29 1609270
>>09216

> malloc в C++ до 20ого стандарт - undefined behavior


Ай не пизди.
30 1609271
>>09004
WinSDK
MFC
ATL
Всякие адаптеры тестов и прочие не нужные тебе штуковины.
31 1609272
>>09270
Ну тащемта да, но все конпеляторы нормально с этим работали.
>>09258

> extern const


const
_____expr
32 1609274
>>09258
Что те непонятно в "подмножество из си"? Это часть си, не весь, кресты не обязаны это реализовать, всё-таки разные языки под разные вещи.
ЗЫ я имел дело с например сишными проектами для вертолетных автопилотов и никогда там такого не видел, мож плохо искал? Хотя могли делать под конкретные компиляторы канеш.
33 1609280
Где решать олимпиадные задачи с тестами?
1511222809556.png19 Кб, 444x348
34 1609284
>>09274

>подмножетсво


А вот и не подмножество, см пик, ток у С++ своя часть в x10 раз больше
35 1609299
>>09284
Динахбил.
37 1609305
>>09274
У если сишные автопилоты не используют _Generic, это не значит, что в языке си не _Generic, что за импликация от частного к общему?
38 1609313
>>09194

>find_if (begin(primes), end(primes), (int x){return i%x == 0; }) == end(primes)


Как это называется? Как почитать?
39 1609339
Олды, объясните, почему я не могу инициализировать так свои значения в массиве? (T это int*)
https://pastebin.com/GSkV5Si3
40 1609368
Если скопировать и вставить код в visual studio, то он автоматически отредактируется по определенному шаблону. Вот как этот шаблон изменить? Например, чтобы после ( и перед ) всегда был пробел, или чтобы { был на одной строке с выражением, а не под ним.
41 1609370
>>09216
itoa это функция перевода в любую систему счисления, а не в стринг.
42 1609376
>>09313
из хэдера algorithm
43 1609380
>>09376
Подобный стиль же должен иметь название
44 1609415
>>09269
А что у нас класс строк для utf-8 завезли чтоб без всякой ебли изкарбоки? Нет. Ну и нахуй этот utf-8 тогда.
45 1609601
>>08570
Все равно хуйня, результат варируется от n0 пиздец как сильно, установил в 1
1471580621835.png305 Кб, 1435x894
46 1609641
Ананасы, чтоб на зубок к собесу выучили
47 1609646
Как заставить шланг компилять? Выдает горы ошибок, нихера не ясно, g++ все собирает без проблем.
48 1609648
.
49 1609651
Если смысл учить Мейерса про STL 2002 года, или лучше взять Галовица для C++17?
50 1609657
>>09651
конечно, c++17, на дворе вообще 2к20
51 1609658
>>09641
Чтоб как таблицу умножения знали
52 1609659
>>09641
Зачем, ведь есть VA/Resharper C++
53 1609668
>>09415
Ну как бы в c++20 будет. А пока можешь юзать обычный std::string как в линуксе
54 1609694
>>09641
Спасибо анончик, давно искал подобную таблицу.
55 1609697
>>09651
Нет смысла. Читай свежатину.
56 1609698
>>09668
Есть же wstring? И UNICODE_STRING виндовый.
57 1609739
Подскажите на сколько распараллеливание по ядрам на плюсах сложнее по сравнению с распараллеливанием на других языках?
59 1609752
>>09745
Чел, советовать целую книгу с теорией человеку, который спросил про сложность этой задачи как минимум тупо.
60 1609754
С++ сеньоры помидоры, я правильно понимаю, что exceptions считаются замедляющими код, не потому что они как-то ресурсо-затратно сделаны сами по себе, а из-за того, что куча различных оптимизаций (типо перемещения) невозможна из-за вызывающихся в конструктрах/деструкторах исключений?
61 1609777
>>09641
писец, это кто-то реально вот так в виде таблички учит? педагогия уровня b прямо
62 1609778
>>09754
Ну и код они в том числе замедляют.
63 1609781
Сап, аноны, помогите разобраться с mutex'ом и синхронизацией потоков.
Допустим, у меня есть очередь, один поток постоянно проверяет пуста ли очередь, если нет, то выводит на печать первый элемент и удаляет его.
И есть поток (метод класса, если объектов много - то поток не один), который добавляет элементы в очередь.
Куда нужно ставить lock и unlock, чтобы все безопасно работало?
64 1609786
>>09781
Ну для твоего случая есть condition_variables,
ты захватываешь мьтекс, который wait освобождаешь и лочит, когда ей приходит уведомление, а затем чекает: если предикат норм, то выход и исполняем код, а если нет - освобождаем мьютекс и ждем следующее notify

condition_variable cond;
Queue q;
...
void pull_from_queue() {
...
unique_lock<mutex> lock(mtx);
wait(lock, []{ return !q.empty() };
...
}

void add_in_queue() {
q.push_front(...);
cond.notify)one();
}

Собсна так синхронизация потоков и делается, через онли мьютексы тебе придется задержку создавать, чтобы дать захватить мьютекс функции, добавляющей в queue элемент, и все это в while
65 1609789
>>09786

>мьтекс, который wait освобождаешь


мьютекс, который в wait освобождается и лочится, когда cond приходит уведомление
быстро фикс
1453344148689.png24 Кб, 477x351
66 1609791
>>09781
Чек в >>08052 4 главу
67 1609797
>>09789
Спасибо.
68 1609805
>>09698
Ну так не будет больше этой поеботы в кроссплатформенных приложениях. One u8string to rule them all
69 1609846
>>09739
Бамп вопросу
70 1609853
>>09380
Стандартная библиотека крестов он называется XDD
С рейнджами это выглядит ещё короче и понятнее.
primes.png6 Кб, 607x135
71 1609900
>>09853
Как то вот так.
72 1609907
>>09805
А чем wide строки не подходят для кроссплатформенности? Вся винда же работает на них и поддерживает кучу разных языков.
73 1609912
>>09907
Это же ублюдочный стандарт с переменной длиной кодировки, до 4 байт. Utf16 наше все.
74 1609933
>>09907
Endianess
75 1609962
>>09739
Без понятия как в других языках, я только в С++ параллелить умею
76 1609965
>>09962
Сложно?
77 1610003
https://www.youtube.com/user/ChiliTomatoNoodle

Охуеннные видосы
s.png31 Кб, 1020x611
78 1610152
>>09368
В настройках.
79 1610179
>>09754
Нет, эксепшены не влияют на оптимизации.
Единственный случай, про который я слышал — это спецификации throw() в имени функции могут как-то запороть оптимизации, потому что компилятор вставит проверки на типы брошенных исключений. Но эти спецификации уже задепрекейтили, так что пофиг.
80 1610184
Как можно организовать чтение из сокета и отправку в одном потоке?
С частотой в одну секунду на сокет приходит сообщение, отправка может произойти в любой момент времени
Сокет храниться в классе
Может, через дефолтный bool - флаг?
81 1610203
>>09777
Сразу видно что вышку не освоил
82 1610209
>>10179
Вроде как без noexcept в конструкторе перемещения компилятор не реализует perfect forwarding, если я верно помню. Хандельянц из PVS-Studio об этом вещал в лекциях своих.
83 1610297
>>10209
Вот это походу и есть единственное место. Ну или в библиотеках разных могут быть безопасные версии каких-нибудь алгоритмов, если не бросаются исключения
84 1610312
Короче, двач, столкнулся таки с GNU autotool.

Как же я блять говна поел, ребята, полный пиздец. Есть ли какая-то альтернатива этому дерьмищу? Оно же блять страшное как моя жизнь.

Как блять это вообще случилось-то, хлопцы? Что за нехуй?

Какие вообще альтернативы этому пиздецу есть? qmake что ли? Почему этот пиздец существует, я не могу. Блять, да по-моему свой скрипт на питоне, выдающий конечный мэйкфайл проще написать чем в этой хуйне ебаться...
85 1610317
>>10312
Ему уж 50 лет скоро, ты что хотел? qmake какой-нибудь да, альтернатива. Существует, потому что диды не готовы перелезать ни на что новое. Ты вот какой новый софт в этом году освоил? А в прошлом?
86 1610336
>>10317

> Существует, потому что диды не готовы перелезать ни на что новое.



Да бля, деды, идите нахуй.

> Ты вот какой новый софт в этом году освоил? А в прошлом?



Ну год тока начался, в прошлом стал активно работать с OpenMP и MPI(со вкусом буста, на чистом MPI писать я в рот ебал).

Ну это только для меня новое, а так-то конечно всё что вам надо было написано дедами. Но вот справиться с жму аутотренингом никак не могу. Ненавижу всей душой.
87 1610337
>>10184
Неблокирующие сокеты.
88 1610413
>>09965
Нет
89 1610441
>>09912
А в utf16 сурогаты
90 1610444
>>09271
Большую часть весят статик либы и pdb
91 1610482
Здраститя, вопрос есть.
Вот например у меня функция, которая делает простые вычисления в цикле (по сути просто сложение), а потом результат в виде массива отправляет в другую функцию и дает ответ. Но делается это оче долго, потому что массивов много, а если распараллелить наверное есть шанс ускорить работу. Я могу заранее задать отправную точку, откуда надо считать для каждого потока, тут проблем нет в общем, но дальше у меня вызывается следующая функция, где массив обрабатывается, и вот я не могу понять, у меня функция отдельно для каждого потока вызывается и выполняется или просто как-то последовательно? Просто из той функции у меня тоже какие-то функции вызываются и тд говнокод. Есть шанс, что это само по себе нормально работает? Я пока в тестовом режиме запустил, чет медленно всё происходит хотя я еще вывод не пофиксил, но все равно хуета. Просто пытался гуглить, там какие-то member functions, это оно или нет? Я просто хочу, чтобы у меня каждый поток делал то же самое, что и вся программа, в принципе даже можно ее несколько раз запустить, но тогда там непонятно с использованием ресурсов пеки шо будет, пока вот на 6 потоках запустил, вроде пишет 100% проца используется.
92 1610487
>>10184

Бля, чел, подробнее давай. Асио или нативные сокеты ебёшь? Чё за дефолт bool флаг?

Если асио, то ебуш async везде
93 1610493
>>10482

Какого нэхуй массива? Натив или вектор?

То есть у тебя целая куча массивов(массив массивов?), и ты хочешь чтобы у тебя сложение происходило одновременно?

Ну бля, дедпул тредпул делай.

А вообще, на gist/pastebin залей. Это чё, тест на работе юниорской?)))
94 1610496
>>08046 (OP)
Че за кал на втором пике, уже есть кондишн вариабл и прочее говнище
95 1610507
>>10493
Это по учебе кста. У меня всего один вектор получается, и там в нем делается +1 к последнему элементу и дальше сдвиг, если нужен (там короче как прибавление единицы к длинному числу в N-й системе счисления, разряды которого в каждой ячейке), потом еще проверка на повторы ну может еще чего прикручу. В принципе может я там хуету написал, но я думаю мне все равно распоточивание понадобится, даже если всё переделывать придется. Потом готовый вектор отправляется в функцию, и потом цикл начинается заново, к этому же вектору снова прибавляется 1, снова отправляется в функцию и тд. А функция просто возвращает 1 или 0.
И эт самое, я там еще постоянно вектора отсылаю, вроде ж как-то можно через rvalue их не копировать каждый раз, а как-то просто быстро передавать, я там правильно написал через move?
https://pastebin.com/Gj8KJ6Ds по морде только не бей
96 1610527
>>10507
Назови нормально переменные, комментарии поставь, что это за говно ебучее ты скинул? Скидывать такой код на ревью = плевать в ебало ревьюеру, я бы на месте учителя тебе в рот насрал.
97 1610551
>>10527
Там просто контекст знать надо... Ну бля, мне сложно сходу на англицком выдумывать кратко и емко что конкретная переменная делает даже на русском. Ну а вообще как нормально чисто без осознания смысла, а по распоточиванию? Говорю, я могу почувствовать, что говно высрал и переделать способ получения вектора, и ту функцию могу тоже переделать, но структура та же останется. Мне вот именно почувствовать как с потоками работать в такой ситуации.
98 1610650
Как правильно итерировать по множеству до бесконечности? Нужно брать элементы из множества и помещать в массив, а когда оно заканчивается снова брать сначала.
99 1610671
>>10650
Примерно вот так
while (i++ % mnozhestvo.size())
100 1610678
>>10650
Пардон, так лучше
int i = 0;
while (true) {
int index = i++ % mnozhestvo.size();
}
101 1610684
>>10678
эх если бы в std::set были индексы
stdmove.png19 Кб, 463x479
102 1610700
Какой из этих двух вариантов лучше? Обычно создавать объект на стеке, а потом просто мувовать его в контейнер? Или указатель на куче? На картинке пример грубый и кривой, но суть думаю понятна. Что по производительности быстрей, если эти классы большие и часто создаются?
103 1610731
>>10700
Не трогай кучу и мувсемантику, пока не разберешься в плюсах нормально. Делай всё на стеке, если явно не требуется другое.
104 1610799
>>10731
Дело в том, что класс AAA большой. Если просто писать
container.data = test;
то будет использоваться copy assignment. Копирование объекта же дольше длится чем просто мувнуть его? Я знаю, что объект test после мува становится пустышкой. Короче, я создаю объект test, делаю что-то с ним, затем пихаю его в контейнер (который кроме этого еще другие поля содержит), и после этого test мне больше не нужен в этом скоупе. Поэтому я подумал, что может быть мув семантика хороший вариант? Или всё-таки лучше аллокация на куче?
105 1610842
>>10152
Да я уже понял, но там мало настроек как-то. Вообщем установил clang-format плагин, пердолю настроечки. В идеале закос под Windows NT style хочу сделать.
106 1610920
>>10799
Тебе же говорят - не лезь, если не разобрался.
Как минимум, задумайся, что лучше - создать объект на месте в куче или вызвать конструктор, а потом переместить объект куда-то?
Хотя, теоретически, компилятор увидит, что ты дурачок и
Object a();
smt.a = std::move(a);
Превратит в
smt.a = object(a);
107 1610938
>>10799

>объект test после мува становится пустышкой


Посмотри, что такое std::move, там просто рвссылка навешивается, специально, чтобы выбрался не копи конструктор, а мув и если ты мув конструктор или там оператор присваивания не сделаешь таким, чтобы он мувал, то никакого мува не случится.
108 1611082
Приветствую, меганьюфаг-школотрон в треде. Знаю основы пайтона, учил его для решения всяких задачек (олимпиады + ЕГЭ), но позже понял, что он говно (для этих целей), сейчас хочу вкатиться в плюсы как можно быстрее. Что можете посоветовать для этого, помимо книг на 1ккк страниц? Или не выпендриваться и читать книжки?
Также был бы рад каким-нибудь годным ресурсам для начинающих. Всем спасибо.
109 1611083
>>10938
Ничто не мешает мувать объект со стэка. Например

std::vector<XXX> aaaa(100500);
foo(std::move(aaaa));

Абсолютно валидный код.

Это ответственность разработчика класса предоставить правильный мув-конструктор.
110 1611102
>>10700
Оба хуже. Первый делает непонятно что, второй течет ресурсы и приводит к битым указателем.

Поскольку ты не очень понимаешь, что делаешь, то напиши

class AAAA
{
std::unique_ptr<XXX> data;
}

мув-конструктор сгенерится автоматически если ты не определяешь своих конструкторов.
111 1611116
>>11082
C++ за 21 день, Конора-Макфлая
112 1611117
>>11082
Страуструп, книги Майерса и Саттера, может быть Вандервуда, потом всякие статьи по современным стандартам.

В С++ нельзя просто взять и вкатиться
113 1611128
>>08046 (OP)
Какие доводы использовать C++ вместо pure C? Си простой, компактный. C++ монструозный, одна только спека сколько там сейчас страниц, 3000?
114 1611129
>>11128
Графические библиотеки.
115 1611130
>>11128
Напишешь что-то сложнее laba2 - сам поймешь.
116 1611132
>>11129
Пока графика не нужна.

>>11130
Мне не нужны тысячи абстракций на все случаи жизни. Я все равно их все никогда не освою. И я сторонник минимализма. Керниган писал, что Си хорош тем, что это маленький язык, им можно быстро овладеть, и реально знать и использовать все возможности языка. В C++ такое невозможно. Даже создатели языка не знают всех его особенностей. А уж экосистема там наверное вообще гигантская. Зачем нужен комбайн с миллионом функций, если будешь пользоваться только десятком?
117 1611134
>>11132
Ты не териотезируй, ты пиши код. Когда ты поработаешь над достаточно большим проектом, сам поймешь зачем нужны шаблоны, классы, виртуальные функции, исключения, конструкторы-деструкторы и прочее.
118 1611135
>>11132

>Пока графика не нужна.


>Какие доводы использовать C++, если мне в моей песочнице ничего из С++ не нужно. Отвечайте быстро!


Никаких, ты прав. Вообще не понимаю, зачем пользоваться языками программирования, если я могу и руками пасьянс разложить.
119 1611138
>>08046 (OP)
Кто нибудь проходил специализацию от Яндекса на курсере "Искусство разработки на современном C++"? Стоит ли проходить платно? Один месяц стоит 4900 руб. Курсов 5 штук. Думаю один курс за месяц можно и не пройти. Тем более последующие курсы наверняка сложнее предыдущих. Выходит что пол года нужно времени, если не больше. Итого минимум 30000 руб. Стоит оно того?

Я еще не совсем понимаю что входит в платную подписку. Задачи точно входят. Но задачи, их же можно самому порешать. Там же название задачи написано, можно нагуглить условия. В общем, если кто проходил платно, расскажите что там к чему, годные курсы или нет.
120 1611139
>>11132

>Зачем нужен комбайн с миллионом функций, если будешь пользоваться только десятком?


Фи, амикошонство, люмпенпролетариат!
121 1611143
>>11134
Я боюсь погрязнуть в теории. Ведь фич очень много, придется все это изучать, потом практиковать. Боюсь что долго придется осваивать конструкции языка.
122 1611144
>>11135
>>11139
Лишние абстракции это зло. Вы сейчас прёте против этого закона, что противоречит программированию как инженерной дисциплине. Реальные доводы будут, факты какие-то, хотя бы развернутое мнение, собственный опыт? Я не для троллинга или срача спрашиваю. Мне хочется понять вашу мотивацию. Свою я высказал. Пока побаиваюсь C++ из-за его монструозности. Может это только предрассудок, не знаю.
123 1611145
>>11144
Ну-ка ну-ка поподробнее про закон. Ты его прочитал где-то или сам придумал?
124 1611149
>>11083
Ну да, ты к чему это? В своём посте я вроде не писал ничего про стек или не стек, ты точно мне ответил?
125 1611152
>>11132
Чем больше приложение, тем больше там вылазит всяких моментов, которые на чистом С никак не контролируются.
126 1611154
>>11145
Лишние абстрации это лишняя сложность. Обычно это случайная сложность, когда проектировщик не нашел способа, не смог сделать простым. В инженерии борьба со сложностью ключевая цель. Иначе смысл инженерии теряется. Принципы KISS постулируют это. И не только они.
127 1611155
>>11152

>Чем больше приложение, тем больше там вылазит всяких моментов, которые на чистом С никак не контролируются.


Можно пример? Хочу понять чего это касается, ручного управления памятью, недостаточным уровнем абстракции, недостаточным количеством инструментов или библиотек для разработки, или может что-то еще?
128 1611156
>>11154

>В инженерии борьба со сложностью ключевая цель.


Ещё раз: ты это где-то прочитал или из своей головы вещаешь?
129 1611160
>>11156
Читать умеешь?

>>11154

>Принципы KISS

131 1611164
>>11155
Там даже перегрузки функций нет.
133 1611167
>>11082

> плюсы как можно быстрее


С таким подходом в плюсы не вкатываются.
134 1611168
>>11156
https://www.google.ru/search?newwindow=1&hl=ru&tbm=bks&sxsrf=ALeKk01W0sVUhgdb8M8FHI9N4Qe9kuQc2Q:1582353350113&ei=xstQXqzMBrKEmwXj2bPYDw&q="борьба+со+сложностью"&oq="борьба+со+сложностью"&gs_l=psy-ab.3...46683.48503.0.49002.2.2.0.0.0.0.132.262.0j2.2.0....0...1c..64.psy-ab..0.0.0....0.-q4b9HHEjMQ
135 1611169
>>11082

> вкатиться в плюсы как можно быстрее


Они не про это, их годами осваивают.
136 1611170
>>11164

>Там даже перегрузки функций нет.


Это используется для полиморфизма или для чего?
137 1611172
>>11166
>>11168
Почему то ссылки порвались. Нужно скопировать всю ссылку целиком.
138 1611175
>>11160

>Принципы


Ты путаешь принцип с законом. Принципы могут быть разные, каждый со своими достоинствами и недостатками. Например, вот широкоизвестное эссе о принципах построения опенсорс программ: базарном и кафедральном. Оба принципа используются и по сей день.
139 1611176
>>11170
Нет шаблонов и перегрузки -> код нужно копипастить 100500 раз и называть func_int, func_double, func_char, да, для него. На самом деле наверняка это решается через касты к воид звёздочка и обратно,но тут возникает множество опасностей отстрела ноги.
141 1611182
>>11128
На С++ можно писать в стиле С, если хочется, но при этом пользоваться всякими дополнительными плюшками, типа перегрузки операторов, RTTI, и т.д.
142 1611183
143 1611184
>>11175
https://rb.gy/e1d7wo

Чем по твоему занимаются инженеры если не борьбой со сложностью?
144 1611185
>>11176
Это решается и по-другому.
145 1611186
>>11160

>Принципы KISS


Так именно из этих соображений появились абстракции, да, в маленьком проекте кажется на чистом си писать проще, но потом оказывается, что плюсы сколь угодно масштабируются и в миллионнострочном проекте писать на плюсах не сложнее(имея некоторый опыт), чем в лабе1. А в си код начинает схлопываться под собственной тяжестью, программисту становится тяжело удержать в голове что делает данный код, его становится тяжело поддерживать, потом единственный бородач, который в нём что-то понимал, уходит на пенсии и имеем легаси, в котором никто нихуя не понимает и стремится запихнуть его под диван.
146 1611187
>>11185
Например?
147 1611190
>>11184
"Борьба со сложностью" — это бесконечно абстрагируемое понятие. Назови одну деятельность, которая не занимается "борьбой со сложностью". А так-то конечно, да. Инженер сделал мост, чтобы он не падал — поборол сложность переправы через реку. А потом хирург вырезал аппендикс — поборол сложность выжить с перитонитом. А потом кондуктор взял деньги за билет — поборол сложность поддержки транспортной инфраструктуры.
148 1611191
>>11182
Извините, а назуй тогда Си нужен в т.ч. в embedded разработки, когда можно писать на Си с классами, с перегрузками и вот этим всём?
149 1611193
>>11186

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


Из-за чего? Чего там не хватает? Можно конкретику?
150 1611195
>>11187
Принимать не числовой аргумент, а функцию.
151 1611196
>>11195
У функции тип от типа аргумента зависит.
Стикер319 Кб, 433x380
152 1611197
>>11196

>У функции тип от типа аргумента зависит.

153 1611198
>>11193
Классов, шаблонов, виртуальных функций, наследования, деструкторов.
154 1611199
>>11197
void f(int x, char y);
тип указателя на неё будет typedef void (*pointer_f)(int x, char y);
155 1611200
>>11199
void (*)(int x int y)
156 1611201
>>11199
А, ты хотел сказать, что при создании указателя на функцию надо знать аргументы к этой функции? Это да. Ты так написал, будто тип функции (тип возвращаемого значения) зависит от типов аргументов.
157 1611202
>>11190
Если проектировщик создал систему для решения задач, но она оказалась сложнее в использовании чем решаемые задачи, то это разве можно считать решением задачи? Если язык настолько сложный, что требует больше времени и сил на его освоение, чем решение задачи другим языком, то зачем нужен такой язык? Суть языка в том, чтобы просто решать сложные задачи, а не сложно решать простые, или сложно решать сложные. Вот это борьба со сложностью. В этом суть, чтобы в конечном итоге решать задачи просто. Это суть инженерии.
158 1611203
>>11196
Да, но разные функции могут возвращать разные значения. Для int передаешь одну фунцию, для других типов другую.
159 1611204
>>11200
Ну а я что написал?
>>11201
Тип функции это не тип возвращаемого значения, int тип интов, int тип указателя на инты, по той же аналогии и с указателями на функции, если ты разыменуешь переменную типа void ()(int x int y) ты не получишь переменную типа воид void.
160 1611205
>>11191

>Извините, а назуй тогда Си нужен в т.ч. в embedded разработки, когда можно писать на Си с классами, с перегрузками и вот этим всём?


Вот это я пытаюсь выяснить. Пока адепты внятных доводов не приводят.
161 1611206
>>11203
То есть тебе под каждый тип нужна функция. И чем это проще, чем func_int, func_double, func_char... ещё 100500 функций.
162 1611207
>>11206
Тем что главная функция не зависит от других. Барьеры абстракций же. Слои не зависят друг от друга. Если тупо под каждый тип писать отдельную функцию, это будет просто копипаста.
163 1611208
>>11202

>Если проектировщик создал систему для решения задач, но она оказалась сложнее в использовании чем решаемые задачи, то это разве можно считать решением задачи?


Да. Пример:
решаемая задача: сделать табурет
простое решение: принести пенёк
решение проектировщика: выкачать из земли нефть, очистить её, полимеризовать в пластик, создать линию по отливке табуретов из пластика, сгенерировать электричество, подключить линию к электричеству, доставить сырьё, и наконец создать табурет.
Что сложнее?
164 1611209
>>11207
Какая главная функция, вот в плюсах ты пишешь
template<class T>
T sum(const T& a, const T& b)
{ return a + b; }

Как ты это обойдёшь, не создавая кучу функций под все типы которые складывать можно?
165 1611210
>>11209

>Как ты это обойдёшь


Я не он, но вообще это _Generic
166 1611212
>>11208
Абсурдный пример
167 1611213
>>11210
А, в С11 шаблоны появились? Прикольно. Нет, ну если в Си и дальше будут завозить фичи плюсов, то и спорить будет не о чем.
168 1611228
>>11154

>Лишние абстрации это лишняя сложность.


В крестах набором же, добавляется больше с каждым стандартом, но что было раньше наоборот легче и внезапно быстрее
169 1611240
>>11191
Для embedded наверное есть какие-то преимущества, типа стандартная библиотека не такая большая, и легче предугадать, как компилятор сгенерит код. Или разрабы просто не знают, на каком ещё утюге им придётся запускать своё творение, и сразу берут по минимуму.
Или если библиотеку пишешь, или прослойку между языками, то Си может пригодиться. Ну и для копания в линуксах и прочих опенсорсах.
А в остальном, я не знаю, зачем Си ещё нужен.
170 1611247
>>11240

> легче предугадать, как компилятор сгенерит код


Ну и нахуя этой экстрасенсорикой заниматься?
171 1611255
>>11247
Ну мало ли, мож кому-то просто нужен кроссплатформенный ассемблер.
172 1611256
>>11255
LLVM ежжи
173 1611257
>>11247
Я вот думаю почему коммитет по си до сих пор не внесёт 2 маленьких, но удобных изменения - к структурам можно обращаться как в С++, не обертывая typedef'ом и
добавить uint для соращение unsigned int, и все блять, язык в 10 раз удобней станет
174 1611258
>>11144

> Лишние абстракции это зло.


Тред Go ниже. Возвращайся когда заебёт самописная кодогенерация, RTTI на говне и рефлекшонах, и отсутсвие абстракций в языке, приводящее к их переизобретению в коде. Это не критика Go, многим заходит писать и так.
>>11132
А теперь подумай, когда он это писал и с чем сравнивал? Си хорош когда у тебя нет вариантов, а иначе можешь пойти в ядро и изучать как они эмулируют плюсовые абстракции.

PS. Не бойся изучать новое, бойся зацикливаться на старом - вылетишь с рынка быстрее чем успеешь сказать котлета.
175 1611259
>>11257

>добавить uint для соращение unsigned int


>не u32/s32 и тому подобное

176 1611260
>>11257
Слишком абстрактно станет.
177 1611261
>>11258

>PS. Не бойся изучать новое, бойся зацикливаться на старом


Сказал крестовый пердун.
178 1611262
>>11258

>изучать новое


Я вот больше боюсь забыть старое, поэтому додрачиваю многие вещи довольно долго.
179 1611264
>>11262
Хуйнёй страдаешь.
180 1611266
>>11191
A B I
B
I

Исторически сложилось, что у цпп стандартного abi нет и не было.
182 1611270
>>11261

> Сказал крестовый пердун.


Ты как говоришь будто я не знаю питон, go, js и pl/sql на уровне достаточном для поиска работы.
183 1611275
>>11270
А зачем тогда пишешь на дерьме мамонта? Копрофил?
184 1611278
>>11275
Потому что Раст ещё не осилил.
185 1611291
>>11278
Давай там, не тормози.
186 1611292
Могу ли я здесь бросить исключение в конструкторе? В классе есть сырые указатели.
187 1611329
>>11292

>В классе есть сырые указатели.


Но туда же кроме nullptr ничего не записали? Тогда можно.

Кстати, подчеркивания перед аргументами ставить не обязательно. Можно писать прямо
Font::Font(std:string fontPath) : fontPath(fontPath)
- компилятор поймет, что один fontPath - это член класса, а другой - аргумент.
188 1611402
>>11292
Бросание исключений в конструкторе абсолютно легитимно, следи только, чтобы они бросались до всяких new и тд, чтобы при раскрутке не было утечек, а лучше вообще используй только смарт поинтеры, это требует совсем небольшой привычки, зато про утечки в 99% случаях можешь забыть. В то же время бросать исключения в деструкторе абсолютно нелегитимно, никогда так не делай, если интересны подробности можешь погуглить про ключевым словам stack unwinding, libunwind, libcxxabi, чтобы понять как это вообще всё работает
https://monoinfinito.wordpress.com/series/exception-handling-in-c/
189 1611427
>>11402
Стараюсь использовать смарт поинтеры где могу, но в СДЛ сразу ловлю исключение, если использую unique_ptr для его объектов
190 1611428
>>11427
Скорее всего там нужен shared_ptr, посмотри когда юзается шаред, когда юник, когда вик.
191 1611432
Алсо может кто знает, как в выдаче гугла забанить ru.cppreference? Постоянно этот кал первым вылезает вместо en.cppreference.
192 1611469
>>11427
Конкретно про СДЛ не скажу, но вообще, когда получаешь объекты от других библиотек, то у них обычно процедура освобождения тоже бывает какая-то библиотечно-специфичная, и для них просто так нельзя вызывать delete.
Возможно, тебе нужен смарт поинтер с кастомным deleter-ом.
193 1611484
>>10920
Ну ок, значит мув пока не трогать, хотя я поэксперементировал и оно работало, (видимо как ты написал?) Можешь дать хороший пример или статью про мув?
А если вот так сделать? container.data = std::move(AAA()); Тоже хуйня под капотом происходит?
194 1611492
>>11258
Что такое рефлекшоны?
195 1611602
>>08862

> вывести все простые числа до 100


Не благодари.
// This file is a "Hello, world!" in C++ language by GCC for wandbox.
#include <iostream>
#include <cstdlib>

template<std::size_t... Args>
struct NotDivideTo;

template<std::size_t N, std::size_t P, std::size_t... Args>
struct NotDivideTo<N, P, Args...> : public NotDivideTo<N, Args...>
{
static constexpr bool value = N % P != 0 && NotDivideTo<N, Args...>::value;
};

template<std::size_t N>
struct NotDivideTo<N>
{
static constexpr bool value = true;
};

template<bool b, std::size_t K, std::size_t... Args>
struct NextPrimeImpl;

template<std::size_t K, std::size_t... Args>
struct NextPrimeImpl<false, K, Args...>
{
static constexpr std::size_t value = NextPrimeImpl<NotDivideTo<K + 1, Args...>::value, K + 1, Args...>::value;
};

template<std::size_t K, std::size_t... Args>
struct NextPrimeImpl<true, K, Args...>
{
static constexpr std::size_t value = K;
};

template<std::size_t... Args>
struct NextPrime
{
static constexpr std::size_t value = NextPrimeImpl<false, Args...>::value;
};
template<std::size_t... Args>
struct PackedPrimes{};

template<bool b, std::size_t N, std::size_t... Args>
struct PrimesImpl;

template<std::size_t N, std::size_t... Args>
struct PrimesImpl<true, N, Args...>
{
using value = PrimesImpl<NextPrime<Args...>::value < N, N, NextPrime<Args...>::value, Args...>::value;
};

template<std::size_t N, std::size_t Head, std::size_t... Args>
struct PrimesImpl<false, N, Head, Args...>
{
using value = PackedPrimes<Args...>;
};

template<std::size_t N>
struct Primes
{
using value = PrimesImpl<true, N, 2>::value;
};

template<std::size_t s, std::size_t... Args>
void print_pack(const PackedPrimes<s, Args...>&)
{
std::cout << s << " ";
print_pack(PackedPrimes<Args...>());
}

void print_pack(const PackedPrimes<>&)
{
std::cout << std::endl;
}

int main()
{
print_pack(Primes<100>::value());
}
195 1611602
>>08862

> вывести все простые числа до 100


Не благодари.
// This file is a "Hello, world!" in C++ language by GCC for wandbox.
#include <iostream>
#include <cstdlib>

template<std::size_t... Args>
struct NotDivideTo;

template<std::size_t N, std::size_t P, std::size_t... Args>
struct NotDivideTo<N, P, Args...> : public NotDivideTo<N, Args...>
{
static constexpr bool value = N % P != 0 && NotDivideTo<N, Args...>::value;
};

template<std::size_t N>
struct NotDivideTo<N>
{
static constexpr bool value = true;
};

template<bool b, std::size_t K, std::size_t... Args>
struct NextPrimeImpl;

template<std::size_t K, std::size_t... Args>
struct NextPrimeImpl<false, K, Args...>
{
static constexpr std::size_t value = NextPrimeImpl<NotDivideTo<K + 1, Args...>::value, K + 1, Args...>::value;
};

template<std::size_t K, std::size_t... Args>
struct NextPrimeImpl<true, K, Args...>
{
static constexpr std::size_t value = K;
};

template<std::size_t... Args>
struct NextPrime
{
static constexpr std::size_t value = NextPrimeImpl<false, Args...>::value;
};
template<std::size_t... Args>
struct PackedPrimes{};

template<bool b, std::size_t N, std::size_t... Args>
struct PrimesImpl;

template<std::size_t N, std::size_t... Args>
struct PrimesImpl<true, N, Args...>
{
using value = PrimesImpl<NextPrime<Args...>::value < N, N, NextPrime<Args...>::value, Args...>::value;
};

template<std::size_t N, std::size_t Head, std::size_t... Args>
struct PrimesImpl<false, N, Head, Args...>
{
using value = PackedPrimes<Args...>;
};

template<std::size_t N>
struct Primes
{
using value = PrimesImpl<true, N, 2>::value;
};

template<std::size_t s, std::size_t... Args>
void print_pack(const PackedPrimes<s, Args...>&)
{
std::cout << s << " ";
print_pack(PackedPrimes<Args...>());
}

void print_pack(const PackedPrimes<>&)
{
std::cout << std::endl;
}

int main()
{
print_pack(Primes<100>::value());
}
196 1611635
>>11602
За такое надо лес валить отправлять на 25 лет
197 1611641
>>11635
Ты просто не можешь в шаблоны.
image.png500 Кб, 604x604
198 1611659
199 1611677
>>11602
Зачем из петушинного загона вылез?
200 1611680
>>11677
Рантаймовая чмоня закукарекала.О каком конкретно загоне идёт речь?
>>11659
Потому что могу.
201 1611688
>>11602
Пиздец, какой же уебищный синтаксис у этих последовательностей. Недавно потребовалось удалить последний элемент последовательности для последующей передачи в другую функцию... Это просто пиздец. Вместо какой-нибудь функции типо pop пришлось строит рекурсию через несколько структур в 30 строк.
202 1611690
>>11258
Вы че блять, сектанты?
203 1611693
>>11688
В теории ты мог бы через std::tuple как-то выкрутиться, но надо смотреть конкретный пример.
204 1611719
>>11688
Вот так можно например выкрутиться

// This file is a "Hello, world!" in C++ language by GCC for wandbox.
#include <iostream>
#include <cstdlib>
#include <tuple>

template<class Tuple, std::size_t... I>
auto remove_last_impl(const std::index_sequence<I...>&, const Tuple& t)
{
return std::make_tuple(std::get<I>(t)...);
}

template<class... Args>
auto remove_last(const std::tuple<Args...>& t)
{
return remove_last_impl(std::make_index_sequence<sizeof...(Args)-1u>{}, t);
}

template<class Tuple>
void print_size(const Tuple&)
{
std::cout << std::tuple_size<Tuple>::value << std::endl;
}

int main()
{
std::tuple<int, char, double> t(1, 'a', 1.23);
auto result = remove_last(t);
std::cout << std::get<0>(result) << std::endl;
std::cout << std::get<1>(result) << std::endl;
print_size(result);
}
204 1611719
>>11688
Вот так можно например выкрутиться

// This file is a "Hello, world!" in C++ language by GCC for wandbox.
#include <iostream>
#include <cstdlib>
#include <tuple>

template<class Tuple, std::size_t... I>
auto remove_last_impl(const std::index_sequence<I...>&, const Tuple& t)
{
return std::make_tuple(std::get<I>(t)...);
}

template<class... Args>
auto remove_last(const std::tuple<Args...>& t)
{
return remove_last_impl(std::make_index_sequence<sizeof...(Args)-1u>{}, t);
}

template<class Tuple>
void print_size(const Tuple&)
{
std::cout << std::tuple_size<Tuple>::value << std::endl;
}

int main()
{
std::tuple<int, char, double> t(1, 'a', 1.23);
auto result = remove_last(t);
std::cout << std::get<0>(result) << std::endl;
std::cout << std::get<1>(result) << std::endl;
print_size(result);
}
205 1611720
>>11484
Не помню конкретную лекцию, но посмотри все, полезно будет, ищи: pvs studio c++.

Насчёт std::move(object()); - здесь object() уже rvalue, а мув из lvalue делает rvalue.
И, если не ошибаюсь, если сделать
void func(object&& x){}

object smt();
func(std::move(smt));
smt.mthd() //будет ошибка

Так как память, выделенная под smt отдается в функцию и там же уничтожается при выходе из нее.
206 1611721
>>11720
Охуеть, почему сдал met hod в спам листе?
207 1611722
>>11721
Слово*
image.png67 Кб, 638x359
208 1611723
>>11484
Погугли universal reference, move semantics, c++ reference collapse rules
>>11720

>а мув из lvalue делает rvalue.


Тут будет && && и это схлопнется в &&, смотри скрин.
209 1611725
>>11720

> Так как память, выделенная под smt отдается в функцию и там же уничтожается при выходе из нее.


Очнись, в c++ не завезли destructive move
210 1611740
>>11721
method
211 1611765
>>11723
Все проще, есть одна &, то &, нету одной &, только &&, то &&. При этом int& & -> int&
212 1611767
>>11765
Что проще? На пикче то же самое написано.
213 1611780
>>11693
>>11719
Мне нужно было передать цепочку хешей которые гарантированно считаются в компайл тайме, поэтому тупл тут не катит. Чтобы заставить компилятор при компиляции их высчитывать приходится вызывать функцию внутри треугольных скобочек.
214 1611781
>>11723

>Тут будет && && и это схлопнется в &&, смотри скрин.


И что это значит? Я вообще не врублюсь.
215 1611783
>>11780

>поэтому тупл тут не катит.


У тупла констекспр конструкторы.
216 1611787
>>11781
Погугли по ключевым словам, выше писал.
217 1611788
>>11783
Но при этом нет гарантии, что он просчитает это при компиляции.
218 1611793
>>11788
Ну если наполнение туплов, хэши или что там, в компилетайме считается, то и тупл компилетаймовый будет.
Screenshot6.png16 Кб, 881x234
219 1611812
Помогите написать кастом удалитель для SDL
Вот так пытаюсь сделать (на пике)
Получаю ошибку C2027(использование неопределенного типа SDL_Texture) & C2338(can't delete an incomplete type);
ftexture это поле класса, выглядит так
std::unique_ptr <SDL_Texture> ftexture = nullptr;
Можно ли вообще указать удалитель при создании, чтобы не писать его постоянно в make_unique?
220 1611816
>>11788

>The correct answer - as stated by Herb - is that according to the standard a constexpr function may be evaluated at compiler time or run time unless it is used as a constant expression, in which case it must be evaluated at compile-time.


https://isocpp.org/blog/2013/01/when-does-a-constexpr-function-get-evaluated-at-compile-time-stackoverflow
В общем если у тебя constexpr auto result = evaluate_hashes(), то гарантированно будет считаться в компилетайме.
221 1611819
>>11816
Ну да можно конечно вручную констэкспр писать, но тогда код по раздувается и по уебански выглядит.
222 1611825
>>11258
Извини братан если обидел. Я че т не то сморозил по пьяни. Ты все правильно говоришь.
223 1611826
>>11819
Ну это явно лучше чем как ты говорил, 30 рекурсий через рекурсии или там аргументы в шаблон засовывать. Ну бля, таплы для того и были придуманы, типа вот у тебя есть там ArgsA... и ArgsB... и из-за той же проблемы, что они слипаются, нельзя написать template<class A, class... ArgsA, class... ArgsB...> и вообще ничего нельзя написать после вариадик темплейта, юзаются два тапла tuple<ArgsA...>, tuple<ArgsB...>, они как раз и нужны для обхода подобных ситуаций, я думаю скорее всего можно там сделать через тапл и это будет относительно норм выглядеть.
224 1611829
>>11819
Хотя хуй знает, может и правда уебански будет, я ж конкретный код не видел, забей.
225 1611841
>>11723

>>а мув из lvalue делает rvalue.


>Тут будет && && и это схлопнется в &&, смотри скрин.


Щас бы, в 2k20, путать rvalue и rvalue reference… ‍♂️
226 1611843
>>11841
Чел, std::move навешивает референс, func второй референс, че ты хочешь...
227 1611853
H Sutter said on Jan 14, 2013 05:50 PM:

@chico: But programmers can rely on constexpr being fully compile-time in the cases where it matters -- to do compile-time things like initialize array sizes or instantiate templates. If they try to invoke something that isn't compile-time, the compiler will let them know.

In all other cases (using constexpr in places the language doesn't require to be compile-time), it doesn't matter. Programmers don't need to rely on anything else being done at compile vs. run time, and can't anyway because of optimizations -- the point of optimization is that the compiler can move work around, including in either direction from/to compile time to/from run time, and all such optimizations are legal as long as a well-formed program can't tell the difference (have different output) -- so it doesn't matter because the program is indistinguishable.

I could imagine someone may want to force a variable to be written to ROM (say), but that (a) is rarely necessary or interesting in practice (I can't remember if I've seen a true need for it myself), (b) is handled using compiler- and platform-specific extensions if at all (e.g., optimization levels and related controls), and (c) isn't specific to constexpr (e.g., it has always been the case that a compiler "might" put a static const int variable into ROM, and that's often cited as the canonical reason why casting away const is undefined behavior -- it may not be physically possible to mutate the const object).

Bjarne Stroustrup said on Jan 14, 2013 08:58 PM:

It seems that I was too terse and caused confusion. Sorry. The correct answer - as stated by Herb - is that according to the standard a constexpr function may be evaluated at compiler time or run time unless it is used as a constant expression, in which case it must be evaluated at compile-time. To guarantee compile-time evaluation, we must either use it where a constant expression is required (e.g., as an array bound or as a case label) or use it to initialize a constexpr. I would hope that no self-respecting compiler would miss the optimization opportunity to do what I originally said: "A constexpr function is evaluated at compile time if all its arguments are constant expressions."
227 1611853
H Sutter said on Jan 14, 2013 05:50 PM:

@chico: But programmers can rely on constexpr being fully compile-time in the cases where it matters -- to do compile-time things like initialize array sizes or instantiate templates. If they try to invoke something that isn't compile-time, the compiler will let them know.

In all other cases (using constexpr in places the language doesn't require to be compile-time), it doesn't matter. Programmers don't need to rely on anything else being done at compile vs. run time, and can't anyway because of optimizations -- the point of optimization is that the compiler can move work around, including in either direction from/to compile time to/from run time, and all such optimizations are legal as long as a well-formed program can't tell the difference (have different output) -- so it doesn't matter because the program is indistinguishable.

I could imagine someone may want to force a variable to be written to ROM (say), but that (a) is rarely necessary or interesting in practice (I can't remember if I've seen a true need for it myself), (b) is handled using compiler- and platform-specific extensions if at all (e.g., optimization levels and related controls), and (c) isn't specific to constexpr (e.g., it has always been the case that a compiler "might" put a static const int variable into ROM, and that's often cited as the canonical reason why casting away const is undefined behavior -- it may not be physically possible to mutate the const object).

Bjarne Stroustrup said on Jan 14, 2013 08:58 PM:

It seems that I was too terse and caused confusion. Sorry. The correct answer - as stated by Herb - is that according to the standard a constexpr function may be evaluated at compiler time or run time unless it is used as a constant expression, in which case it must be evaluated at compile-time. To guarantee compile-time evaluation, we must either use it where a constant expression is required (e.g., as an array bound or as a case label) or use it to initialize a constexpr. I would hope that no self-respecting compiler would miss the optimization opportunity to do what I originally said: "A constexpr function is evaluated at compile time if all its arguments are constant expressions."
228 1611858
>>11843
Тебе кто-то лапши на уши навешал
229 1611859
>>11858

>In particular, std::move produces an xvalue expression that identifies its argument t. It is exactly equivalent to a static_cast to an rvalue reference type.


Чел...
230 1611874
>>11859
И к чему ты это процитировал?
По-моему, твоё упоротство только подтверждает, что ты не отличаешь rvalue от rvalure reference.
231 1611875
>>11138
Проходил. но тогда он только выходил и я покупал отдельно каждый курс. Первые два достаточно простые. Красный повеселей. Коричневый сложен, черный не стал проходить, там подписка началась.
В общем курс неплохой. Но следует учесть, что у меня было за плечами несколько прочитанных книг, мини проекты и на работе я перекатился в разраба.
По сложности задач, зависит от времени и терпения. Некоторые я решал неделя+, другие за пол часа. Финалки достаточно сложные. Готовься к разрыванию очка на грейдерах.
232 1611877
>>11874
It is exactly equivalent to a static_cast to an rvalue reference type.
233 1611881
234 1611886
>>11881
ретурн тип std::move(T&&) это std::remove_reference<T>::type&&, что же это за тип, хммм...
235 1611893
>>11886
Что за тип — ясно.
А при чём тут reference collapsing rule и что и как func "навешивает" — нет.
236 1611900
>>11893
При том, что есть функция f(T&& a) и мы туда отдаём переменную типа object&&, поэтому T будет object, получается я лох, а ты прав, прости меня, дурака.
237 1611906
>>11900

>При том, что есть функция f(T&& a) и мы туда отдаём переменную типа object&&


В `std::move(object())`, `object()` это
1. Не переменная, а выражение
2. Тип которого `object`, а не `object&&`
238 1611908
>>11812
У тебя все правильно с делетером. Тут проблема с тем что SDL_Texture в хедере специально не определен, чтобы скрыть внутреннюю имплементацию, а unique_ptr разыменовывает указатель этого типа, например в методе get. Так можешь начать писать свою обертку для таких случаев.
239 1611913
>>11906
Я про func писал, а не про мув, в func мы передаём rvalue reference object&&, я жопой смотрел, думал там что-то типа func(object&& &&), то есть сам тип object&&.
240 1611916
>>11913

>то есть сам тип object&&.


Типа func<object&&>().
241 1611918
>>11913

>в func мы передаём rvalue reference object&&


В выражении `std::move(object())`, у `std::move` возвращаемый тип `object&&`, а у самого выражения тип `object`.
242 1611933
>>11918
static_assert(std::is_same<object, decltype(std::move(std::declval<object>()))>::value,"");
статик ассершн файлед
static_assert(std::is_same<object, decltype(std::move(std::declval<object>()))>::value,"");
всё ок
Так что здесь вы неправы.
243 1611936
>>11918
Разметку съело, в общем проходит проверку только с object&&
244 1611937
>>11826
>>11829
Вот типо для примера, как это выглядит. Функция констекспр и строка залупа нигде больше не используется. Почему пидорас на компиляторе не может это заранее подсчитать и подставить готовый хеш? В итоге приходится делать вот такой лайфхак с аргументами шаблона.
245 1611939
>>11933
Ты бы почитал, как тип, обозначаемый `decltype(e)`, получается из типа выражения `e`.
246 1611951
>>11939
Ну ок, а как мне тогда проверить получаемый тип?
247 1611952
>>11937
Потому что так надо. Можешь в макрос завернуть, если тебе такой синтаксис не нравится.
248 1611955
>>11937

> Почему пидорас на компиляторе не может это заранее подсчитать и подставить готовый хеш?


Ты пробовал аргумент std::string_view constexprом сделать?
249 1611956
>>11951
Из стандарта
image.png7 Кб, 392x119
250 1611959
>>11955
Всмысле, оно так не работает
251 1611965
>>11959
Да не так, при вызове тип
constexpr string_view s;
f(s)
252 1611967
>>11965
То же самое, он так же оставляет строку и считает хеш в рантайме.
253 1611968
>>11967
А если func сделать constexpr?
254 1611969
>>11967
Func.
255 1611970
>>11968
>>11969
Так cout юзается, не получится
256 1611972
>>11967
А, там cout. Ну хз, тогда наверное либо через constexpr a = либо через шаблон.
257 1611974
>>11970
Даа.
258 1611975
>>11956
Можно конкретнее?
259 1611979
>>11967
Хотя может попробуешь cout вытащить оттуда? Посчитать в констекспр, а потом уже печатать отдельно.
image.png36 Кб, 563x618
260 1611984
>>11979
Вот так сделал, ничего не изменилось, выход компилятора все тот же со строкой в бинаре.
>>11972
Ну вот интересно почему так нахуй, что мешает посчитать при компиляции?
261 1611986
>>11984
Может то, что результ не константный?
262 1611988
>>11812
>>11908
Нужно просто объявить деструктор и определить его в cpp. Иначе придётся include писать в заголовке.
Алсо, =nullptr можно не писать
263 1611993
>>11986
А какая разница константный он или нет? Зачем вшивать в бинарь call GetHash когда можно просто mov rax, 0x228?
264 1611994
>>11956
А, блин, там тот же принцип, что и когда мы например f(T& t) по ссылке получаем, то внутри функции это уже просто T?
265 1611995
>>11994
Вроде того.
266 1611996
>>11993

>А какая разница константный он или нет?


Ну больше там не на что ругаться как мне кажется. А тут может он не понимает, что его можно оптимизировать.
267 1611998
>>11995
Ясно, ну неплохо я так обосрался.
268 1612026
Кстати кто может объяснить как стдшный basic_string_view добился того, что при инициализации из константной строки он считает длину на этапе компиляции? Почему мой кастомный класс так не может и считает все в рантайме?
269 1612045
>>12026
_LIBCPP_CONSTEXPR _LIBCPP_INLINE_VISIBILITY
size_type length() const _NOEXCEPT { return __size; }
270 1612047
>>12026
>>12045
Все я походу понял почему, в char_traits::length юзается магическая функция __builtin_strlen которая позволяет зафорсить компилятор посчитать длину заранее.
271 1612048
>>12047
Хз, от имплементации зависит, там где я смотрю нет такого.
272 1612050
>>12047
template<typename _CharT>
_GLIBCXX14_CONSTEXPR std::size_t
char_traits<_CharT>::
length(const char_type* __p)
{
std::size_t __i = 0;
while (!eq(__p[__i], char_type()))
++__i;
return __i;
}
273 1612051
>>12050
static _GLIBCXX_CONSTEXPR bool
eq(const char_type& __c1, const char_type& __c2)
{ return __c1 == __c2; }
image.png47 Кб, 1126x443
274 1612052
>>12050
>>12048
В VS вот такая ебанина
275 1612053
>>12050
template<typename _CharT>
struct char_traits
{
typedef _CharT char_type;
276 1612054
>>12052
Ну тип работать-то и без этого должно, попробуй как в гцц сделано, мб прокатит?
image.png44 Кб, 764x691
277 1612058
>>12054
Ну вот вроде почти так написал, все равно не хочет при компиляции считать. А вы кстати проверяли как гцц компилирует? Может он так же в рантайме считает.
278 1612081
>>11875
Мне в принципе пох. Я писал на множестве разных языков, включая большое количество функциональных. Это меня не пугает. Дело в том, что боюсь погрязнуть в байтоебстве. Раньше то я вручную памятью не управлял. И с другой стороны стоит прагматик, и говорит: нахой оно тибе нужна? Смысл в чем?

И я не могу ответить на эти вопросы. Даже самому себе. Дело в том, что сук тянет к плюсам. Почему не знаю. Просто тянет. Наверное какие то детские мечты. Помню один чувачок с моей группы, а я учился на программиста, рассказывал, что C++ язык для "Ылитки". Я конечно в это поверил тогда. Потом уже, когда писал код на разных языках, включая Хаскелл, я смеялся над этой шнягой. Но теперь не знаю, хочется закрыть этот ебаный гельштат.
279 1612098
>>12058
Нет, не проверял.
280 1612106
>>11995
Слушай, вроде как std::move(...) это xvalue expression, и что, можешь тыкнуть где написано про то, что у xvalue тип становится не T&& а T? А лучше вообще на статью, где объяснено про xvalue, glvalue, prvalue и тп.
281 1612114
>>12106

> Слушай, вроде как std::move(...) это xvalue expression, и что, можешь тыкнуть где написано про то, что у xvalue тип становится не T&& а T?


https://timsong-cpp.github.io/cppwp/n4659/expr#5
282 1612118
>>12114
Спасибо.
283 1612142
>>12114
Алсо нашёл годное объяснение, может кому пригодится тоже.
http://www.stroustrup.com/terminology.pdf
285 1612178
>>12161
Спасибо.
286 1612193
Посоветуйте, что почитать про шаблоны. Чтобы научиться такую хуйню >>11602 писать, или хотя бы понимать что оно делает.
287 1612202
>>12193
МунлаеSFINAE пойми да посмотри пару примеров ,"метапрограммирование с++ шаблоны" можешь погуглить, на степике есть курс(бесплатный) https://stepik.org/course/3206/promo, там ближе к концу что-то разбирается, ещё неплохо помогает на хаскеле каком пописать, потому что там те же принципы, а вообще это был пример как сделать простую задачу сложным способом, в реале 95% всей этой хуйни никогда никем не используется, а то и вообще могут ебало набить за подобную хуйню в коде, как заметил анон выше>>11635, потому что почти всегда всё можно сделать проще, читабельнее и тд
288 1612234
>>11144
Ты говно, троль или дебил кукаретик без опыта.
289 1612250
>>11492

>Что такое рефлекшоны?


Что бы как в qt ты мог в рантайме узнавать информацию об классах, делать циклы по енумам, узнавать кем был вызван метод и т.п. В стандарте это все пока на уровне планов.
290 1612352
Почему
char ch = new char[20];
ch = (char
)"full time";
if (ch == "full time") cout << "true\n";
Выдает true, a
cin.getline(ch, 20);
if (ch == "full time") cout << "true\n";
falce? Как это работает?
291 1612384
>>12352
У тебя тут все неправильно и идёт сравнение указателей, а не строк.
292 1612487
>>12384
То есть, "full time" хранится, как константная переменная, но вторая "full time" не может же иметь тот же адрес памяти? Почему тогда true выдает.
293 1612514
>>12487
От компилятора зависит, можно включить объединение строк и будет тот же адрес.
294 1612533
>>12514
Спасибо.
295 1612638
>>12514
>>12352
Хуйню пишете.

char ch = new char[20]; // Выделяется кусочек памяти на 20 чаров, с адресом первого байта например 0х4242. Так что ch==0x4242
ch = (char)"full time"; // Берется адрес первого байта статической константы, например 0х0013, и перезаписывается в ch вместо старого значения. Теперь ch==0x0013. Первоначально выделенная память с началом в 0x4242 и размером 20 байт при этом становится недоступной и течёт.
if (ch == "full time") cout << "true\n"; // Ну тупо сравниваешь значение указателя c тем, что только что присвоил. Очевидно 0x0013==0x0013.

А вот во втором случае надеюсь последние две строчки не продолжение той же программы, иначе это уже совсем пизда всё по-другому:

char ch = new char[20]; // Так же, как в прошлый раз выделяется память. ch==0x4242.
cin.getline(ch, 20); // Читается строка и сохраняется в участок памяти, на который указывает ch. Сам ch продолжает указывать на ту же память, т.е. ch==0x4242
if (ch == "full time") cout << "true\n"; // За каким-то хуем сравнение адреса первого байта статической константы с адресом первого байта выделенной памяти. Очевидно 0x4242!=0x0013.
15750466977260.png596 Кб, 900x506
296 1612662
>>11812
Вообщем сделал я эти кастомные удалители для SDL, если кому-то интересно как это сделать могу скинуть гитхаб.
297 1612761
>>12638
Там перед getlune нет выделения, да и любом случае все неправильно. Если надо строки сравнить, то надо либо strcmp либо std::string юзать.
15804377197320.jpg198 Кб, 700x943
298 1612831
Анончики, помогите. Как создать android-приложение на плюсах с Qt в Visual Studio? Не спрашивайте зачем мне это
299 1612838
>>12831
А никак блядь! Напиши лучше на жабе
300 1612845
>>12831
Какая ламповая проперженная табуретка!
301 1612853
>>12831
Зачем тебе студия, сделай в креаторе, там в хелпе должно быть всё расписано.
302 1612868
>>12853
Мне студия нравится больше, чем креатор. Там даже расширение для Qt есть специальное. Не могу только понять как там проект под андроид создать. За 3 дня перерыл весь интернет и не один способ не работает
303 1612887
Думаю на чем делать ГУИ. Под виндоус, кросплатформенность не нужна

Qt - монструозная хрень, требует кодогенерации, нет нормального дизайнера
wxWidgets - в общем норм, есть некоторые корявости вроде обработки событий, нет дизайнера (есть какие-то сторонние тулзы, но ну их)
WinForms - очень простые в использовании, есть дизайнер, по сути дельфи от майкрософта. Но нужно будет делать врапперы вокруг плюсового кода.
MFC - вроде как легаси ад, а вроде как и нет. Есть кое-какой дизайнер. Отлично интегрирована в студию, проблем с вещами вроде файлов ресурсов не будет.
GTK - не юзал, по отзывам имеет нестабильный API, требует танцев с бубном чтобы юзать под виндой.
304 1612914
>>12887

>нет нормального дизайнера


Лолват? Там на виджетах считай теже винформс, только непривычные, а с qml там по-моему даже удобнее чем в студии с xaml.
305 1612939
>>12887

> Qt - монструозная хрень, требует кодогенерации, нет нормального дизайнера


this.
Лучше уж код генерировать, чем дрочить MESSAGE_MAP_BEGIN. Если ещё плагин для студии поставить, то вообще ноль ебли.
И по поводу монструозности - это скорее всего хромиум (спасибо веб-блядям). По факту тебе нужны только Qt5Core.dll, Qt5Gui.dll и Qt5Widgets.dll (все вместе точно до 50мб). Ну и pdb + дебаг версии этих библиотек.
306 1612940
>>12887

>Под виндоус


а кроме этого?
Что делать тулза будет? Какие функции будет? Ну там - базы данных, графики, порты ввода/вывода, сетевые функции, работа со звуком?

Сколько человек будет использовать? Сколько лет, ты планируешь, она проработает? Какие версии винды? Будет ли продаваться (т.е. коммерч. лиценз)?

Будет ли это однократная поделка или допиливаться месяцами/годами? Сколько человек будет участвовать в разработке? Придется ли кому-то после тебя её дорабатывать?
307 1612942
>>12887
>>12939
Ну и в большинстве случаев можно вообще без moc обойтись, теперь сигналы без него могут работать
308 1612974
>>12887

>монструозная хрень


На сам деле там есть утилита для деплоя приложух, которая сама тебе выбирает только те длл которые требуются. Получается в районе 50-150 мб у меня обычно.
309 1612997
>>12940
Редактор для самодельного игрового движка. Продаваться не будет. Будет использоваться и разрабатываться потенициально лет 20, поэтому стабильность важна (а MFC стабилен как кладбище). Писать буду я один скорее всего.

>>12914
Например, свой компонент так просто не добавишь через дизайнер, да и вообще в нем большинства компонентов нет. XAML тоже плох, но я и не планировал WPF использовать.

>>12939
Я сколько не пробовал юзать QT в студии, у меня всегда что-то ломалось. То кодогенерация, то обновления файла формы в дизайнере не подхватывались. Чтобы те же файлы ресурсов прикрепить к бинарнику тоже нужны кастомные шаги сборки.

Вроде как Qt очевидный выбор, но на моем опыте с ней требуются некоторые пляски с бубном. MFC ископаемая, но она в студии работает из коробки.

>>12974
Тут больше имелся размер самой библиотеки - она скачивает гигабайт 10, наверно, при установке, и там есть вообще все на все случаи жизни.

>Получается в районе 50-150 мб у меня обычно.


Вообще это очень много, для простой десктопной программы.
310 1613035
>>12997

>скачивает гигабайт 10,


Я хз, у нас анально огороженный инет на виртуалках, кют ставим из оффлайн инсталлятора (на сайте есть такая опция, но в жопе).
311 1613037
>>12997
В общем все советуют Qt. Попробую его и посмотрю как пойдет
312 1613045
>>12887
Qt охуенна, я бы даже не думал.
313 1613062
>>12887
Пиши на пьюр винапи. Либо возьми какой-нибудь готовый имгуи.
314 1613072
>>13062

>пьюр винапи


Мазохист? Даже mfc чудовищно, а чистый винапи это за гранью зла.
315 1613082
>>12250
Тупой вопрос. А зачем они нужны? Это RTTI и typeid?
ptr.png3 Кб, 293x258
316 1613206
Если передать указатель в другую функцию и освободить память там. То вроде же и указатель в мейне должен освободиться? Я знаю, что указателю после delete еще нужно nullptr присвоить. Но если этого не делать, и просто использовать его дальше будто его не удаляли, то что будет? Код на пике ошибку не выдает. Куда он пишет значение 69? Про смарт поинтеры я в курсе, но мне интересно как эта херня работает с сырыми указателями.
317 1613219
>>13206
delete просто помечает память как освобождённую, мол память по этому адресу может использоваться снова, с самими данными по адресу ничего не происходит, пока нет нужды их затереть и что-то другое туда записать
318 1613224
>>13219
А вот хуй там, мой хитрый демон успел в твою память записать свои караваны
319 1613225
>>13224
Ну типа я про то же, сегодня ты записал туда 69 и распечатал 69, а завтра демон насрал и распечатал ты 18962862865923, хотя 69 вроде записывал.
320 1613227
>>13224
К слову про демона, у меня твой код 0 печатает.
321 1613232
>>13225
Компилятор кстати может встроить твой delete и что дальше будет неизвестно
322 1613234
>>13232
Да понятно, что использовать указатель после делете это юби, чё там будет одному Богу известно.
323 1613237
>>13234

>использовать указатель


Точнее дереференсить его. Ну это логично, мы сказали, что больше нам не нужна память, куда этот указатель указывает, компилятор делает с ней чё хочет угодно.
324 1613239
>>13219
>>13224
То есть, new резервирует мне память на куче, и только мои указатели могут туда писать. А после вызова delete память освобождается, и писать туда может уже кто угодно, верно? Вообще как и кем это все прослеживается? Например сам размер выделеной памяти new int[10] – это делает C++ runtime (или как оно правильно называется) или операционная система за этим следит? Если потом вызвать delete[], откуда он знает, что память размером 10 интегеров, т.е. где хранится эта информация?
325 1613241
>>13239

>А после вызова delete память освобождается, и писать туда может уже кто угодно, верно? Вообще как и кем это все прослеживается? Например сам размер выделеной памяти new int[10] – это делает C++ runtime (или как оно правильно называется) или операционная система за этим следит?


Размер инта умножается на 10 плюс некоторое смещение, потом с полученным размером вызывается системный malloc.
>>13239

> откуда он знает, что память размером 10 интегеров, т.е. где хранится эта информация?


Там в начало добавляется смещение, в котором длина хранится, поэтому кстати и нельзя путать delete и delete[], так как обычный delete ничего про смещение не знает, а скобочный будет размер искать в начале.
326 1613243
>>13239
Впрочем это всё везде может по разному быть реализовано, стандартом не регламентирована реализация, я лишь один из вариантов рассказал.
327 1613311
>>12887
Dear imgui
328 1613312
>>13239
Строго говоря в твою память и так любой писать может, иначе как бы я cheat engine пользовался.
329 1613320
>>13239

> Вообще как и кем это все прослеживается?


Для этого придумали unique_ptr
330 1613323
>>13206
Указатель — это просто число, адрес в памяти. Он вообще не знает, есть ли по этому адресу что-то, или нет. Если память освободили, вызвав delete, а кто-то всё равно полез по этому адресу, то может случиться всякое разное:
- ничего
- дебаггер может поймать ошибку и остановить программу
- чтение мусора
- повреждение данных другого объекта (который уже успели записать туда вместо удалённого)
- порча кучи (внутренних записей менеджера памяти)
- access violation (если менеджер памяти уже отдал этот кусок системе обратно)
331 1613345
>>13239

>Вообще как и кем это все прослеживается


malloc.c лол
Он какбэ зависит от компилятора, и там обычно сидит оптимизирующий менеджер памяти заточенный под твою ОС. Прямого управления памяти обычно нет никогда.
332 1613456
Я так понимаю, методы структуры хранятся отдельно от информационных полей объектов структуры? Я не проебусь, записав структуру в файл, записав туда какие-нибудь указатели на методы?
333 1613522
>>13456
Если функции не виртуальные, то норм.
334 1613627
Что происходит с фоновым потоком метода класса, запущенного с помощью datech, при передаче этого объекта в функции указателем?
335 1613631
>>13456
вот, полюбуйтесь
сначала эти щеночки задают такие вопросы, а потом работают на работах за 150 тыщ рублей в месяц
а я гнию у себя в провинции
336 1613632
>>13323

>Указатель — это просто число, адрес в памяти.


нет, утырок
вообще то указатели в с++ типизированные, за исключением специального случая
337 1613636
>>13632
Ну блядь инты и енумы тоже типизированные, но это не отменяет того, что это тоже просто числа.
338 1613665
>>13631
Ну так тоже работай на работе за 150к, кто тебе мешает?
339 1613728
>>09284
меня кстати всегла это интересовало, есть пример кода, который переварится в СИ но не в крстах?
340 1613763
>>13728
#1
int i = ++(int){1}; // compound literal

#2
int foo (size_t n, size_t m[n]); // VLA
341 1613782
>>13728
ЕМНИП в сях официально есть restrict, в отличие от плюсов.
342 1613849
>>13763
Кампаунд линерал инта, это, конечно, некст левел.
343 1613850
>>13728
Приведение void* к другому указателю в плюсах через статик каст, а в си просто так кастится.
344 1613869
>>13728
Да полно такого в нюансах стандартов, типа void main / int main, смысл auto и static и т.д.
345 1613975
Дано:
std::vector<MyObj > objects;
Как вызвать функцию
void fn(std::vector<MyObjBase
>)
Без лишних мозгоебли с reinterpret_cast и создания нового контейнера?
346 1614013
>>13975
Никак.
347 1614021
Заметна ли разница по времени между обращением к элементу по индексу у вектора и массива? Ну мне дохуя раз надо получается. VS пишет, что много времени уходит на [] оператор. Есть эксперты в чате?
348 1614097
сап. тупой вопрос, но я не могу нагуглить хоть убейте. есть функции strchr() и strtchar(). а какой аналог strrchr для strstr? чтоб нашло последнее появление субстроки в строке, а не первое
349 1614101
>>13975
А просто template<class T> void f(std::vector<T>) не покатит?
350 1614106
>>13975
Или вектор shared_ptr<MyObjBase>`ов хранить?
351 1614116
>>14101
>>14106
Идея правильная, но хотелось бы этот код оставить в .cpp.
shared_ptr же тут ни не поможет?
352 1614120
>>14116

>shared_ptr


Оставить код в цпп? Поможет, наверное.
353 1614191
>>13241
>>13323
>>13345
Спасибо за ответы.
354 1614204
>>14097
std::string::rfind.
Ну что ты как маленький, хоть погуглил бы.
355 1614230
Что можно почитать по устройству компиляторов/линковщиков и конкретно Visual Studio?
Надоело, что процентов 70 сообщений при работе со сторонними библиотеками тупо не понимаю.
356 1614237
>>14204
спасибо большое. гуглил, но упорно не гуглилось. надо приучать себя на инглише гуглить
357 1614239
>>14021
В дебаг сборках медленнее, в релиз только при изменениях резерва памяти в рантайме, если ты резерв подходящий не сделал.
358 1614260
>>14239
А еще лучше наверное делать vector.resize()?
359 1614264
>>14260
И кактус на монитор поставить зумеры, это вам не джаваскрипт, тут нужно понимать что происходит
360 1614319
>>14260
Наверное, все же vector::reserve.
361 1614331
>>14319
Предлагаю vector::revise
362 1614333
>>14120
Так типы всё равно разные, оно даже не соберётся
363 1614352
Ура, анончики! Час назад прислали оффер на джуна, люблю этот тред!
364 1614360
>>14116

>хотелось бы этот код оставить в .cpp.


Ты не обязан имплементации шаблонов делать в хедере.
https://www.codeproject.com/Articles/48575/How-to-Define-a-Template-Class-in-a-h-File-and-Imp
365 1614362
Анончики, не подскажите как в C++ получить максимальную информацию о компьютере? Начиная от битности системы, заканчивая видюхой? Гуглил, ничего толкового не нашел...
366 1614378
>>14362
Какая ОС?
367 1614379
>>14378
win xp-10
1582618056409.png257 Кб, 1080x1920
368 1614393
>>14362
Ты даже не начинал гуглить кому ты врешь.
369 1614394
>>14393
мне нужна не только это. Мне нужны максимально возможные данные о компе. Понятно, что если гуглить по отдельности, может и сделаю (За 1к строк), но может есть более практичные способы (Где всё храниться в одном месте/либе)
370 1614398
>>14360
Я больше имел ввиду то, что хотелось бы, чтобы этот код не расползался по разным dll и при изменении не приходилось всё заново собирать.
1582619915302.png264 Кб, 1080x1920
371 1614427
>>14394
Прекращай клоунаду.
372 1614445
>>14427
Смотрел сколько там данных? Или думаешь я так не гуглил. Там инфы на 0.01% нужной мне. Нужно что-то на подобии wmi python
373 1614453
>>14445
Нахуй тебе инфа? А разрешение пользователя на сбор ты получил?
374 1614465
375 1614505
>>10507

const int L = 7; // L = 8

Бля, вот это ты мне мозг сломал сука xD

Я просто мимокрог. Смотреть эту хуйню, или тебе уже не надо?
376 1614508
помогите пожалуйста понять что не так с кодом. если убрать из ифа на втором скрине переменные act_leftpressed и act_rightpressed, ошибка исчезает, это кстати приватные поля того же класса actor
377 1614559
>>14508
По умолчанию ретурн добавь
378 1614564
>>14559
спасибо, помогло
379 1614627
>>14564
Включай в компиляторе warnings as errors
warn.png11 Кб, 1543x128
380 1614682
>>14627
Еще лучше использовать стат анализаторы чтобы все варнинги по мере написания кода показывались.
381 1614700
>>14445
Т.е ты сам нихуя не знаешь, какие данные тебе нужны? Земля бетоном. Алсо репортнул тебя на всякий тарищу майору, ты какой то.
382 1614739
>>14264
>>14319
С reserve() нужно будет использовать push_back(), а с resize() сразу можно оператором [] записывать. Что в цикле быстрее?
383 1614751
>>14352
Поздравляю.
Какие у тебя вводные? Что спрашивали? О чем примерно тестовое?
384 1614770
>>14751
Спасибо!
4 курс, ит-специальность, учил плюсы на первом и втором курсах, но очень медленно - тупо освоил книгу Лафоре "ООП в С++", но потом понял, что она очень старая. Год тупо ничего не делал, этой осенью снова взялся за обучение, но плотнее. Попытался найти работу, но ничего не получилось - 4 отказа после тестового/собеседования. Сейчас понимаю, что знал мало. Немного потрогал кьют в ходе решения одного из заданий, неспешно прочитал все книги Майерса кроме СТЛ, петов на гитхабе не было, только несколько решенных тестовых небольших. Если все объединить, то мой объем знаний можно получить за год интенсивного обучения.

Написала эйчар по резюме, которое не обновлял месяца 3, выслала тестовое - сделать клиент-северный чат на сокетах без использования библиотек, компилировать под линукс и написать мейкфайл вручную. Я немного переусердствовал и написал насколько умею и понимаю в ООП-стиле, чтобы было расширяемо и т. д., отправил, позвали на собеседование. На собеседовании, что интересно, вопросов чисто по плюсам не было - тимлид сказал: "мне в принципе всё понятно". Писал насколько могу хорошо - лямбды, смарт-поинтеры, все, что знаю и понимаю из более свежих стандартов в общем. Хотя уже сейчас, глядя на этот код, очень много переделал бы
385 1614792
>>14739
Быстрее без цикла целый диапазон одним insert.
386 1614810
>>14770
Сколько платят?
387 1614815
Мне сегодня приснился сон. Суть его в следующем. Если у бабы сиськи большие, то это аналогично тому, что она хранит данные в самих сиськах, а данные как мы знаем бывают объемные. У мужиков сиськи не объёмные потому, что мужики хранят указатель на данные, а не сами данные.
388 1614818
Поняли?)
389 1614839
>>14815
Да ты гений.
390 1614840
>>14770
Тащи код сюда. Интересно же как выглядит код, который апрувнули, думаю ньюфаням будет полезно.
391 1614931
>>14739
Быстрее reserve + emplace_back.
Во время resize будет создаваться объект конструктором по умолчанию, а потом перезаписываться копирующим =.
В случае emplace_back объект будет конструироваться прямо на месте.
15750466977260.png596 Кб, 900x506
392 1615022
Я тут недавно мелькал с тестовым заданием по поводу Понга с ботом. Сдавал его где-то неделю назад, как я понял само тестовое их устроило раз позвали на собес, но на собесе я ужасной чепухи наговорил и мне так и не перезвонили.
https://github.com/AI-Decay/Pong-with-Bot
393 1615025
>>15022
Скриншот кинь хоть посмотреть
394 1615027
>>15025
? Я скинул гитхаб же, код весь там, должно собираться. Сейчас уже вижу много проблем в этом коде, но я ничего не изменял с момента отправления.
395 1615028
>>15027
Ты думаешь мне не влом возиться с твоей парашей?
396 1615030
>>15028
Так а чего скриншот ты хочешь? Там же не 1 файл
397 1615031
>>15030
Игры самой прост, визуальной
398 1615032
составляющей
1506208046653.png39 Кб, 595x400
400 1615037
>>15033
Ну на пин понг похоже, я тут глянул код, ебать ты в паблике насрал, все кишки наружу
401 1615040
Как на крестах работать с XML стандартными средствами?
402 1615041
>>15033
Каким то методам const дал , каким то нет
403 1615042
>>15037
Это я только в меню сделал так, точнее забыл просто спрятать
404 1615044
>>15040
SOIL_load_image
1449443164050.png12 Кб, 928x59
405 1615050
>>15042
говнокод лопатами можно выгребать
1417986390871884843.jpg146 Кб, 622x800
406 1615066
>>15050
Я старался сделать как можно лучше.
407 1615069
>>15066
В этом и твоя проблема. Надо делать не как можно лучше, а нормально блядь, чтобы удобно было, и писать, и читать, и использовать.
408 1615127
>>14815
А где у мужиков сами данные?
409 1615141
>>15069
Это что то типа парадокса Блаба. Новичок не может знать что такое нормально, для него это и есть нормально. Потом он узнает о новой фиче, и начинает считать ее нормальной, а предыдущую - недостаточно хорошей.
410 1615143
>>08046 (OP)
как так вышло, что в плюсах нет дефолтного типа byte и нужно делать все через charы?
411 1615144
>>15127
Он же написал у мужиков указатели. Очевидно джва маленьких шара и указатель, направляемый в сторону двух больших шаров женских данных.
412 1615145
>>15143
uint8_t
413 1615146
>>15127
мужики хранят данные в чужих сиськах
414 1615147
>>15022
Шляпища. Незнание ООП вижу я. Очень слабая реализация, нет интерфейса. Это даже не уровень лабы.
415 1615148
>>15145

>uint8_t


но это же очередной сорт инта
417 1615150
418 1615161
>>15144

>указатель, направляемый в сторону двух больших шаров женских данных


Лучше, когда указатель является указателем на член класса. Забыл, на каком языке пишешь?
419 1615162
>>15040
vcpkg install libxml
420 1615175
>>15040

> 2020


> xml


Лучше никак. Если будешь использовать libxml2, то отруби в нём всё то же что отрубали в xmlsec. Для базового использования можешь взять rapidxml или tinyxml2.
421 1615181
>>14810
Сначала испытательный срок - платят только оклад 24к, затем добавляется бонус 0-40%, который зависит от результативности на проектах, т. е. после исп. срока 24к-33.6к. Не ДС-ы.

>>14840
Щас дерьмом закидают как бедолагу выше
https://anonymous.4open.science/r/acfc48d1-abf6-480d-a5b2-2d6b729c985c/
422 1615183
>>15022
Типичный код новичка, который пытается имитировать "настоящий" код, старается, но толком не понимает, что делает.

Все не так плохо. Но если тебя взять на работу, то вреда будет больше, чем пользы: кому-то придется тебя учить.
423 1615184
Можно ли назвать знания работы с мьютексами и обоспечение потокобезопасности фундаментальными знаниями C++ для джуна?
424 1615187
>>15022
>>10003
Он разбирал многие моменты, которые у тебя коряво написаны, в плейлисте для начинающих
425 1615188
>>15040
Никак. У меня только в легаси есть tinyxml, обычно кютешный жсон искаропки или свой дсл.
426 1615302
>>15181

>как бедолагу выше


Ты-то прошёл, какая тебе беда, если закидают.
427 1615322
>>15302
Я не хотел тебя обидеть, мне просто всегда стыдно за свой код почему-то
428 1615329
>>15322
Я не тот бедолага, я далеко не такой смелый.
429 1615342
>>15147
А куда я тут мог интерфейс засунуть? Разве что сделать какой-то класс, который бы обобщал все фигуры (которых у меня всего 2)
430 1615346
>>15183

>Все не так плохо. Но если тебя взять на работу, то вреда будет больше, чем пользы: кому-то придется тебя учить.


Я думал Джунов обычно и учат по началу.
431 1615485
>>15181
Охуеть, с таким тестовым такая маленькая зп. И сколько времени давалось на него?
432 1615503
>>15346
Не, учат интернов, а джун это такой имплементщик, предполагается, что он способен нормально выполнять задачи по данному описанию, ну там создай класс, который ведёт себя так-то, отрефактори вот это и это, чтобы было вот так, добавь функционал такой-то по аналогии с тем-то и тд
433 1615506
>>15181

>anonymous.4open.science


Ты бы еще накрыл AES-ом исходники, а то чето слишком легко смотреть, всего лишь файлы по одному скачивать

Я б взял теннисиста, чем этого шифрующегося шизика-дауна
434 1615518
>>15485
Удваиваю. Меня без тестового джуном брали на 40. И книжек по крестам я не читал.
435 1615553
>>15506
Вот даун сука, с этой говнохуйни даже вгетом напрямую файлы не вытянуть

Идут нахуй: ты, твой чат, создатель этого шедеврального реп хостинга
437 1615590
>>15585
Ну поставь звездочку тогда, шерлок. Тебе же нужно скопировать чужой кот. А за возможность говорят спасибо, а не "ебать клоун"

мим
438 1615611
>>15585
Пиздец, нахуя по 100000 хеадеров создавать на каждый пук? Открываешь файл, а там 5 строчек один ебучий енум объявлен и все.
439 1615713
>>15585
Смешно, и смысл было шифроваться.
440 1615785
Вопрос по SFML.
Почему, когда я применяю к спрайту setOrigin(10, 20), спрайт сдвигается в точку (-10, -20) ?
441 1615840
>>15485
Это я переборщил, тимлид сказал, что достаточно было бы захардкодить
>>15585
Ну вот поэтому я и не хотел ссылку кидать
442 1615857
>>15840

>ссылку кидать


Ебать ты программист, нахуй. Сейчас (да и раньше) в интернете, если палишь уникальное сочетание символов, то это деанон
443 1615907
>>15840

>Ну вот поэтому я и не хотел ссылку кидать


Скинул бы сразу всем было бы похуй. Эффект стрезанд в действии.
444 1615993
>>15785
Потому что ты меняешь точку от которой он рисуется/вращается/итп.
445 1616672
>>15611
Двачую. Видимо из сисярпа перекатился он, там это частая практика.
446 1616674
>>15585
Ебать там калькулятор, мне аж плохо стало.
447 1616679
>>16672
Нет
>>16674
Это что-то вроде lab3.cpp со второго, кажется, курса лол
448 1617077
>>15585
>>16679
А что тебе в форварде ответили?
мимо ничего не ответили
449 1617110
>>17077
Отказали - слабое решение (так и есть)
450 1617248
Между версиями qt большие отличия? Есть смысл более старую версию ставить, если книжка по ней именно?
451 1617288
>>17248
ставь новую. Отличия есть, но разберешься.
452 1617326
>>17248

>2020


>найти книжку в интернете по любой версии qt не проблема


>есть смысл более старую версию ставить, если книжка по ней именно?


Как же мне не понять этих людей
453 1617347
как думаете, насколько корутины будут медленными?
в принципе, это довольно прикольно выглядит, только интересно, сколько за это придётся заплатить.
454 1617359
>>17326
Книжки не поспевают за версиями, очевидно же.
455 1617360
>>17248
Он хорошо учится по встроенному хелпу с примерами и туториалами, ну и стоковерфлоу для трудных мест.
456 1617365
char ch 1, ch2;

ist.get(ch1);
if (!ist) return;

ist.get(ch2);
if (!ist) {
ist.clear();
ist.unget();
}
return;

Я правильно понимаю, что unget() положит обратно ch1? Влияет ли ist.clear() на память потока (последний символ)? Влияет ли неуспешная попытка ist.get(ch2) на память потока (последний символ)?
457 1617373
>>17365
Матерь Божья, ist.clear(std::ios_base::badbit) выставляется. Пусти идиота программировать, и он отстрелит всю ногу.
458 1617378
459 1617383
>>17378

>корутина и сопрограмма в одном скрине


Орнул.
460 1617415
Анон, дай совет студенту (хотя тут и так одни студенты). Есть вот такой код http://cpp.sh/74jmm
Да, это лаба, но при её выполнении у меня появилось аж два вопроса:
как сделать 132, 161 и 173 строки хоть немного короче, чтобы умещались хотя бы в 24 дюймовый экран в 100% масштабе?
Почему в строках 132 и 137 если для переменных chas, minuta и sekunda написать пространство имён Triad вместо Time, то нихера не работает, а переменным god, mesjac и den вообще насрать, через Triad к ним обращаются или через Date?
image.png38 Кб, 422x361
461 1617432
>>17383
Что не так с сопрограммой??

улыбнуло "Не следует путать с Копрограмма."
462 1617433
>>17415
У тебя ромбовидное наследование.
Memories
/ \
Date Time
\ /
Triad

Ну вот компилятор и не знает, ты собираешься использовать Triad который от Time или который от Date
463 1617440
>>17433
А почему переменные god, mesjac и den изменяясь в Date меняются также и в Triad, а с классом Team такого не происходит? Что-то мистика какая-то.
464 1617443
>>17440
В Date ты обращаешься к переменным напрямую: ++god
В Time ты создал Новое поле Date date; и меняешь ЕГО поля date.DenPlus()
image.png15 Кб, 480x217
465 1617445
>>17415

>как сделать 132, 161 и 173 строки хоть немного короче


берешь и переносишь. Код у тебя тот еще пиздец, конечно. Последняя строка функции SohranVremja что должна делать?

>Почему в строках 132 и 137 если для переменных chas, minuta и sekunda написать пространство имён Triad вместо Time


потому что protected
466 1617452
>>17443
Ааа, а я это говно месяца два назад написал, а пришло время сдавать только сейчас. Спасибо за терпение.
>>17445

>Последняя строка функции SohranVremja что должна делать?


Хрен его знает. Наверное, рудимент от чего-то остался. Вообще, этот код ещё надо бы чистить и править.
467 1617457
>>17452
Я б честно говоря все выкинул и переписал.
Мне кажется что идея у тебя была такая
class Triad { int a,b,c }
class Date : Triad { getDay() {return a} setDay(d) {a=d} ...}
class Time : Triad { getHour() {return a} setHour(h) {a=h} ...}
class DateTime : Date, Time { Date date; Time time; setDateTime(long long unixtime) { date.setDay(...)} }
468 1617459
>>17457
Ой, в последней строчке я имел в виду без наследования, просто аггрегацию:
DateTime { Date date; Time time; ...
Правда я не знаю какое у тебя задание, может как раз на наследование... С другой стороны, нужен ли класс Triad...
469 1617460
https://www.youtube.com/watch?v=rHIkrotSwcc

Пиздец, я всегда думал, что unique_ptr зиро оверхед. Даже сам Страуструп так говорил. Какого хуя?
470 1617492
>>17432
Да норм все. Анон просто не знает нормы русского языка, которые говорят, что нельзя употреблять одно и то же слово в отдельной части текста
471 1617494
>>17460
Про ссылку я почувствовал, увидев move и не увидев &&. А вот про noexcept протупил.
472 1617496
>>17460
Ты с шаред перепутал.
473 1617510
>>17460
А, кажется они хотели ABI поменять в c++20 но старперы проголосовали против.
image.png26 Кб, 422x561
474 1617566
Сап аноны недавно начал вкатываться в программирование и у меня
возник вопрос можно ли как то передать адрес массива который определен в другой функции причем что бы main использовался только для вызова других функций вот код который я сделал для примера
475 1617570
>>17566
Можно
Просто делаешь этот массив ДО функции mas и в нее передаешь.
Ну например
int main()
{
int * mass;
int limit = mas(mass);
int summ = sum(mass, limit);
delete[] mass;
заодно и не забудешь удалить его - каждому new[] должен соответствовать delete[]
int mas(int& mas) { //тут передаешь массив по ссылке - все изменения распространятся и вовне
...
mas = new int[n];
...
476 1617637
>>17570
Он же функции после main пишет даже не сообщая main о их существовании, он же даун.
477 1617642
>>08046 (OP)
Сложно ли вкатываться на работку джуниора c++? Много ли знать надо?
478 1617644
>>17642
Надо знать C++, матан, теорию алгоритмов, дискретную математику и, зависимо от направления, физику. Тебе всё это будет проще в универе каком-нибудь выучить. 4-5 лет и ты проградрист.
479 1617645
>>17637
Наверняка там прототипы сверху вместе с инклюдами.
480 1617646
>>17645
Никогда не понимал смысла прототипов, логично же сразу в начале программы объявить все функции без маняпрототипов.
481 1617660
>>17644

>C++, матан, теорию алгоритмов, дискретную математику и, зависимо от направления, физику


Охуенный список. Из него реально полезно знать только ВНЕЗАПНО С++. Возможно алгоритмы, чтобы на собесах (и только на собесах) деревья вертеть. Все остальное зависит от предметной области.

>4-5 лет и ты проградрист.


На этом уже шаге можно искать оплачиваемую стажировку. На которой даже платят деньгами.
482 1617662
Аноны, у меня опять проблемы
http://www.cpp.sh/5bdot
Почему методы класса Date при вызове из объектов в классе Time не отрабатывают? Компилятор как будто их не видит. Использую VS2019.
483 1617663
>>17662

>при вызове из методов в классе Time


Поправил себя.
484 1617665
>>17642
В прошлом треде как раз обсуждали это. >>1601874 →
485 1617668
>>17663
Я думаю, что тебе надо передать объект date по ссылке внутрь этих функций.
486 1617669
>>17668
А как передавать по ссылке? Я в ссылках в ООП ещё не особо разобрался, мой максимум это списки.
487 1617670
>>17669
void ChasPlus(Date& date)
..
void PlusChas(Date& date) { ChasPlus(date); PokazDataVremja(); maks(); min(); }
..
if (vvod == "ChasPlus") vremja.PlusChas(date);
Если я сам не путаю ничего, тоже изучаю только пока.
488 1617671
>>17415

>god, messiah

489 1617672
>>17510

>ABI поменять


Это ты про что?
490 1617673
>>17642
Сложно. Много и главное понимать нужно. Выбери что-то другое, там во многих случаях просто знать достаточно.
491 1617676
>>17673

>Выбери что-то другое


Питон?
Другой анон
492 1617677
>>17676
Не знаю, я не выбирал другое. Почему? Да ни почему. Какие могут быть почему, когда есть c++?
493 1617679
>>17677
А в линупсах почему-то всюду этот питон. Хотя он в десятки раз медленнее крестов.
494 1617681
>>17679
Он удобен для написания небольших скриптиков, много чего делается искаропки, учится моментально, в каком-то смысле каждый программист умеет писать на питоне, тк он близок к псевдокоду и тд
495 1617686
>>17681
А мне было бы удобно программировать на Русском
цел главн()
{
строка хуй;
вывод << "Эй, анон";
ввод >> хуй;
если(хуй == "а?") вывод << "хуй на!";
}
496 1617687
>>17686
Тогда тебе в 1С тред.
497 1617688
>>17687
Но я хочу так в крестах! Чтобы тупые пиндосы учили великий Русский язык лишь бы кодить на крестах!
498 1617689
>>17688
Всё в твоих руках.
499 1617690
>>17689
А теперь сделай из крестов ассемблер и заскринь сюда.
image.png413 Кб, 1280x720
500 1617691
>>17690
Зачем? Там и без этого можно на асме писать.
501 1617692
>>17691
Прикольно.
502 1617696
>>17670
Не работает, всё равно методы Date не вызываются через методы Time.
503 1617703
Вот, сделал цепочку из наследований и всё работает http://www.cpp.sh/2awgn
Но почему не работает тут????? http://www.cpp.sh/2awgn
504 1617705
>>17703
Что ты сделать хочешь?
505 1617708
>>17691
Сука ненавижу когда перед и полсе звездочки пробелы, когда она в качестве оператора указателя.
506 1617709
>>17708
Да, это хуита, я лично всегда пишу рядом с типом, int*, а кто-то пишет пробел перед звёздочкой, в этом тоже какая-то логика есть, но мне её не понять, так получается тип "указатель на инт", а так хз что вообще, ещё с констами какая-то такая параша тоже есть.
507 1617712
>>17705
Я хочу здесь http://www.cpp.sh/5bdot понять, почему методы Date не вызываются при компиляции из методов Time, если оба методы наследуются от Triad, а Date является другом Time.
508 1617714
>>17712
А что пишет?
509 1617717
>>17714
Попробуй тут часы, минуты и секунды поуменьшать и посмотри, как не меняются от этого дни, месяцы и годы
https://repl.it/repls/ConsciousShamefulOctal
А при линейном наследовании вида Tried->Date->Time всё нормально.
510 1617718
>>17717
Очень, очень тяжело понять, что у тебя там написано, но если я правильно понял у тебя при вызове ChasPlus меняется переменная date, которая у тебя class Date{...}date;, а не vremja.
511 1617720
>>17718
Спасибо, я тоже не понял, что у тебя тут написано.
512 1617721
>>17720
При вызове ChasPlus меняется
class Date{
...
}date;, а должна меняться vremja.
513 1617723
>>17720
class Date : protected Triad
{...}date;

class Time : protected Triad
{
protected:
void ChasPlus()
{
if (chas == 23) { date.DenPlus(); chas = 0; }
else ++chas;
}
Вот тут ты date меняешь.

class Memories : protected Date, protected Time
{
....
void PlusChas() { ChasPlus(); ...}vremja;
...
vremja.PlusChas()

А вот тут ты меняешь vremja, но ChasPlus будет менять не Date, которая в vremja, а date, которая выше была.
514 1617725
>>17721
>>17723
Короче, я напутал в методах-сохранялках даты/время? Сама по себе дата меняется, но я сохраняю не то. Я понял.
515 1617728
>>17725
Да, ну и я бы переделал так, считал бы всё в секундах, ну там addday это добавлял бы к текущему количеству секунд 86400 и тд, а потом как хотел бы печатать брал бы остаток от деления на 86400(это были бы часы/минуты/секунды) и то, что поделилось было бы днями и потом переводил бы количество дней в год месяц день по формуле отсюда
https://web.archive.org/web/20170507133619/https://alcor.concordia.ca/~gpkatch/gdate-algorithm.html
ScreenshotBrave20200228-080537.png455 Кб, 1080x1920
516 1617746
>>17672
Ну он там в середине видео пояснял, что unique_ptr генерит 4 лишние инструкции ассемблера, причем не самые быстрые, косвенный доступ к памяти. Вот об этом речь видимо и шла.
517 1617756
Сап, анон. Делаю бенчмарки своего сатана, бенчмарк сделан так: загрузка файла в вектор значений, запуск таймера, цикл по выходным значениям, мой матан (используется Eigen), результат в другой предсозданный до таймера вектор, таймер стоп.
В релизе процессор мммаксиум в 30%, как увести его в сотку?
518 1617770
>>17696
А ты их объявил виртуальными?
Почитал бы хоть о принципах наследования, а не брался за него сразу, да ещё и за множественное.
519 1617789
>>17696
Блядь. Удали весь свой сраный код и выбери предметную область получше.
Для изучения наследования и композиции отлично подходят gui-контролы. Заодно и чему-то реально полезному научишься.
520 1617832
>>17717
Я тебе вчера уже объяснял, почему.>>17723
Потому что в MinutaMinus() ты вызываешь ChasMinus() ЭТОГО объекта, vremja.
А в ChasMinus() ты вызываешь date.DenMinus() ДРУГОГО объекта date.
521 1617844
>>17696
Я тебя запутал немного, у тебя объекты были глобальными созданы, т.е. не надо передавать их в функцию.
Если я правильно понял твою ошибку, то у тебя дни прибавляются в объекте date, а выводишь ты значения полей объекта vremja.
523 1617974
>>17746
Нет, в смысле он имеет ввиду например сменить всякие __gxx_personality_v0, __cxa_throw и тд? Ну там сигнатуру поменять, функции убрать/добавить, крч интерфейс сменить или он про другое?
524 1617997
>>17496
Ты гонишь? Шаред то вообще оверхед оверхедный.
Обновить тред
Двач.hk не отвечает.
Вы видите копию треда, сохраненную 3 мая 2020 года.

Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
« /pr/В начало тредаВеб-версияНастройки
/a//b//mu//s//vg/Все доски