
Fedor
25.08.2018
10:05:00

Peter
25.08.2018
10:15:31

Fedor
25.08.2018
10:17:10
Если нужно, я сделаю. Буду признателен за ответы. Просто прежде на эти гуглоформы всем лень заходить, сложнее чем ответить в чате или в личку

Google

Matthew
25.08.2018
11:24:01

Alexander
25.08.2018
12:21:46
прошу не оффтопить. с такими темами - в чатик с работой

Aidar
25.08.2018
12:25:03
Хорошо что я не миддл, не донимают с вопросами

Stooge
25.08.2018
13:39:30
pacany

Alexander
25.08.2018
13:49:26
тут кстати doctest 2 релизнулся
https://www.reddit.com/r/cpp/comments/99nkhw/doctest_2_released_moved_to_c11_added/

Igor
25.08.2018
14:29:54
*второй день забывает завести в трекере решарпера хотелку на раннеры для доктеста*

Ilia
25.08.2018
14:34:21

Xessao
25.08.2018
14:36:24

Andrey
25.08.2018
14:36:56

Ilia
25.08.2018
14:37:36

Alexander
25.08.2018
15:04:26

Stanislav
25.08.2018
15:05:10

Google

Alexander
25.08.2018
15:07:11

Friedrich
25.08.2018
15:22:50
А, всё, ок. Я думал, это что-то про доки, а это unit test framework.
Довольно симпатичный, кстати.

Valentin
25.08.2018
15:42:29
Если в супапро ответа не дали - можно сюда код кидать через хастбин?
Вопрос, на сколько корректно тут использовать std::shared_ptr?
(И стоит ли ообще использовать)
https://hastebin.com/onifonujic.cpp
То что нет private/public- исключительно чтобы меньше захламлять код get/Set, в идеале они должны быть


Max
25.08.2018
16:18:21
Если в супапро ответа не дали - можно сюда код кидать через хастбин?
1. Во всех сеттерах их лучше мувать из аргумента, ибо конструктор копирования shared_ptr'а будет всё время обращаться к атомарному счётчику. И это достаточно большие накладные расходы, по сравнению с raw pointers и unique_ptr.
2. имеет смысл продумать lifetime объектов. Навскидку, вот, например, EventPtr: откуда берутся эти события? Они где-то хранятся, пока IListener их обрабатывает? Тогда в контейнере стоит хранить unique_ptr, а в Ilistener прокидывать weak_ptr. Если они нигде не хранятся и просто передаются по цепочке IListener'ов, то лучше мувать unique_ptr. Если таких гарантий нет, то да, shared_ptr — подходящий вариант.


Valentin
25.08.2018
16:19:57
1. Во всех сеттерах их лучше мувать из аргумента, ибо конструктор копирования shared_ptr'а будет всё время обращаться к атомарному счётчику. И это достаточно большие накладные расходы, по сравнению с raw pointers и unique_ptr.
2. имеет смысл продумать lifetime объектов. Навскидку, вот, например, EventPtr: откуда берутся эти события? Они где-то хранятся, пока IListener их обрабатывает? Тогда в контейнере стоит хранить unique_ptr, а в Ilistener прокидывать weak_ptr. Если они нигде не хранятся и просто передаются по цепочке IListener'ов, то лучше мувать unique_ptr. Если таких гарантий нет, то да, shared_ptr — подходящий вариант.
А rvo не срабатывает тут?


Aidar
25.08.2018
16:28:45
1. Во всех сеттерах их лучше мувать из аргумента, ибо конструктор копирования shared_ptr'а будет всё время обращаться к атомарному счётчику. И это достаточно большие накладные расходы, по сравнению с raw pointers и unique_ptr.
2. имеет смысл продумать lifetime объектов. Навскидку, вот, например, EventPtr: откуда берутся эти события? Они где-то хранятся, пока IListener их обрабатывает? Тогда в контейнере стоит хранить unique_ptr, а в Ilistener прокидывать weak_ptr. Если они нигде не хранятся и просто передаются по цепочке IListener'ов, то лучше мувать unique_ptr. Если таких гарантий нет, то да, shared_ptr — подходящий вариант.
Виков на юник не бывает
Ты хотел сказать копи элижн?


Max
25.08.2018
16:37:32
А rvo не срабатывает тут?
return value optimization здесь не работает по определению. Если будешь передавать lvalue, то будет вызван copy ctor, если rvalue — move ctor. В обоих случаях move внутри не помешает.
а почему, кстати?

Aidar
25.08.2018
16:38:06
Потомучто это сырые указатели
А Вики считают ссылки
Там у шеред стейта 2 счетчика - для виков и для шередптров
(с) Скотт Майерс, книжка для новичков

Valentin
25.08.2018
16:40:48
Айдар, а ты что думаешь на счёт шередов тут?
Где можно было их не юзать?

Google

Aidar
25.08.2018
16:40:58
Я не читал код
Щас
Но я всегда за идею с контейнером-контекстом и хенддерами к нему вместо шередов

Max
25.08.2018
16:43:24
Тогда только сырые указатели, только хардкор.

Alex
25.08.2018
16:46:43
Напомнило, улыбнуло)

Aidar
25.08.2018
16:48:26
Тыщи неймспейсов
И спагетти из абстрактных фабрик
createWindowEnvironment ничего не создает с точки зрения юзера
Нафигато введено 2 невалидных состояния вместо RAII
Foo::FooPtr выглядит странно
А еще ты там делаешь шередптры вместо optional
Или там не опшнал а юник?

Valentin
25.08.2018
17:22:52

Aidar
25.08.2018
17:23:37

Alex Фэils?︙
25.08.2018
17:35:12
Как так-то?1

Google

Aidar
25.08.2018
17:35:53
Ну у вика есть метод получитьшеред

Alex Фэils?︙
25.08.2018
17:36:18
А как же weak_unique_ptr?

Aidar
25.08.2018
17:36:35
Это что си++18?

Evgeniy
25.08.2018
17:36:53

Дмитрий
25.08.2018
17:39:16

Виталий
25.08.2018
19:29:37
Как сделать многострочную ассемблерную вставку в gcc?

Alexey
25.08.2018
19:30:58
Ребят, я только начал изучать c++. Сам знаю ява скрипт и пхп. Вопрос, как компилировать через консоль и подключать библиотеки?

Alex Фэils?︙
25.08.2018
19:31:27
Нужен компиль в патхе и исходник

Alexander
25.08.2018
19:42:39

Matwey
25.08.2018
19:50:33
Господа, почему есть чат для начинающих C++ и нет чата для заканчивающих C++?

Alex Фэils?︙
25.08.2018
19:51:26

Vladislav
25.08.2018
19:52:46

Alexander
25.08.2018
19:54:38

Max
25.08.2018
20:05:47

Vitaly
25.08.2018
20:06:12

Иван
25.08.2018
20:18:58
А компилятор что-то может с асм вставкой сделать?

Alex Фэils?︙
25.08.2018
20:19:46
Онможет убиться об асмовставку и не оптимизиовать кол

Valentin
25.08.2018
20:20:53
П.с. фейлс , где твою биографию можно посмотреть?

Matwey
25.08.2018
20:22:10
Правда тогда их придется трансформировать в АСТ

Google

Vitaly
25.08.2018
20:23:01

Matwey
25.08.2018
20:24:13

Max
25.08.2018
20:24:40

Matwey
25.08.2018
20:25:24
А зачем там ассемблер?

Max
25.08.2018
20:25:45

Vitaly
25.08.2018
20:26:59
Берите голый асм и развлекайтесь, но не делайте асмовставки в плюсовом коде.
Система сборки отлично способна вызвать для asm файлов какой-нибудь nasm/yasm и затем слинковать всё воедино.

Max
25.08.2018
20:27:48

Alexander
25.08.2018
20:27:50

Vitaly
25.08.2018
20:28:35
Зря ты такой категоричный
В своё время приходилось поддерживать код с асмовставками "в угоду ручным оптимизациям" и это была боль.

Max
25.08.2018
20:29:22
Тогда потом с крестами придётся мешать вызов этой прелести. А так она аккуратно инкапсулируется, и всё.

Alexander
25.08.2018
20:29:34

Max
25.08.2018
20:29:48

Alexander
25.08.2018
20:30:05

Vitaly
25.08.2018
20:30:26