@ProCxx

Страница 2265 из 2477
Алексей
06.08.2018
17:30:55
Grigor
06.08.2018
17:30:55
https://gitlab.com/cppit/jucipp
а оно работать начало?)

Kirill
06.08.2018
17:31:17
Можно ссылочек?
Я неправильно фразу поставил, я сам хотел посмотреть :)

Google
Denis
06.08.2018
17:33:17
Ну на каждый чих это конечно да, но порядок интересен. может 10% рантайма сожрать?
бенчмарков нет, но я бы не удивился, да. Правда при этом я бы не удивился и цифре <2%

Kirill
06.08.2018
17:34:02
Блин :) завтра прогоню тесты

Алексей
06.08.2018
17:34:30
Я неправильно фразу поставил, я сам хотел посмотреть :)
Без выброса 11096 с выбором 12379 на поиск чисел меньше 400000

Kirill
06.08.2018
17:35:50
Неплохо так отжирает, это правда при огромном рекурсивном стеке

Dmitry
06.08.2018
17:37:00
Корявенько набросал lightweight io через интерфейс к сырому буферу: https://github.com/bibmaster/utils/tree/master/src Без локалей и флагов. Custom форматирование можно приделать через манипуляторы типа os « hex(123).
Посмотрел fmtlib, там internal::basic_buffer один в один, вплоть до именования virtual grow. Значит к нему можно приделать форматирование через перегруженные append а потом по вкусу использовать либо через format интерфейс либо через последовательность append в виде потокового вывода.

Алексей
06.08.2018
17:37:34
Без выброса 11096 с выбором 12379 на поиск чисел меньше 400000
Это в миллисекундах наcore i3 и кимпиляторе 4.8.5

Denis
06.08.2018
17:38:44
Это в миллисекундах наcore i3 и кимпиляторе 4.8.5
это просто разовые проверки? или среднее от N прогонов с отбросом выбросов с обеих сторон?

Ilia
06.08.2018
18:35:10
Alexander
06.08.2018
18:36:42
это наверное наихудший вариант из сех возможных.

Pavel
06.08.2018
18:39:59
Сеньор инженер-электрик %)
"Главный энергетик" по-русски)

Google
Побитый
06.08.2018
19:41:00
фу! кто вас учил среднее брать?
Слышал, надо наименьший брать?

Nikita
06.08.2018
19:56:30
Ребят, нужно быстро соориентироваться, в ninja и в msbuild есть "dry run" режим, типо как make -n ?

yuri
07.08.2018
00:22:10
В VC++ флаги компилятора могут вообще анвиндинг выбросить в пользу утечки ресурсов. Такие вот оптимизации.

Может быть я что-то путаю, это не Александреску рассказывал про использование std::expected<T, E> в конструкциях вида return do(first()) .then_do(second()) .otherwise(report_error_here()) .then_do(third()) .otherwise(report_error_there()); ?

Aleksandr
07.08.2018
06:25:27
Может быть я что-то путаю, это не Александреску рассказывал про использование std::expected<T, E> в конструкциях вида return do(first()) .then_do(second()) .otherwise(report_error_here()) .then_do(third()) .otherwise(report_error_there()); ?
Александреску точно рассказывал про expected, но таких конструкций я не помню, по крайней мере в том рассказе, что смотрел я

что-то похожее было у Ивана Чукича (его фамилия же так пишется?) когда он про монады/функторы говорил

Ilia
07.08.2018
08:44:41
#announce #paper Разработка больших сложных проектов невозможна без использования методологий программирования и инструментальных средств, помогающих контролировать качество кода. В первую очередь, это грамотный стандарт кодирования, обзоры кода, юнит-тесты, статические и динамические анализаторы кода. Всё это помогает выявлять дефекты в коде на самых ранних этапах разработки. В этой статье демонстрируются возможности статического анализатора PVS-Studio по выявлению ошибок и потенциальных уязвимостей в коде операционной системы Android. Надеемся, что статья привлечёт внимание читателей к методологии статического анализа кода и они захотят внедрить её в процесс разработки собственных проектов. Читать статью: https://habr.com/company/pvs-studio/blog/418891/

пацаны, сложение по типу лиспа, зацените)) https://repl.it/repls/IdealisticSuddenType
Какой же тут лисп? (printf("\n%d", (+(124_, 51)))); Запятые, точки с запятой, скобки лишние....

Azoyan
07.08.2018
09:29:45
это шутка, чувак

P
07.08.2018
10:22:19
это шутка, чувак
Тут не шутят

Ilia
07.08.2018
10:23:46
Блин, смотрю Александреску, видео про исключения и expected... Да просто нихрена не понятно, что он тараторит...!

Крис
07.08.2018
10:27:41
Блин, смотрю Александреску, видео про исключения и expected... Да просто нихрена не понятно, что он тараторит...!
Его ещё можно понять, вот смотрел доклад какого-то француза, там и произношение с диким акцентом и тараторит бешено. Да и некоторые звуки в силу специфики французского не выговаривает. Без субтитров нереально смотреть

Aleksandr
07.08.2018
10:29:58
на cpprussia 2018 был немец Rainer Grimm, рассказывал про concurrency best practices, вот он хоть и немец, понятно было где-то 40%

yuri
07.08.2018
10:31:28
да шутки за 300 там, в основном
Ну, без определенной доли иронии на С++ программировать невозможно. Иначе буст получается.

Aleksandr
07.08.2018
10:33:25
а скажите-ка, насколько законно инициализировать ссылку как Test & test = *static_cast<Test *>(nullptr)? после этой строки у меня уже будет UB, даже несмотря на то, что я ссылку нигде не использую далее?

Aleksandr
07.08.2018
10:34:30
ок, а если я допустим Test & test = *static_cast<Test *>(reinterpret_cast<void *>(0x543210))?

Google
Aleksandr
07.08.2018
10:34:43
и потом её не трогаю, это же законно?)

Kathu
07.08.2018
10:36:56
а почему бы сразу не reinterpret_cast к Test* ? зачем сначала к void*?

Aleksandr
07.08.2018
10:37:17
а почему бы сразу не reinterpret_cast к Test* ? зачем сначала к void*?
да просто для примера, можно конечно сразу в Test*

Azoyan
07.08.2018
10:37:46
а скажите-ка, насколько законно инициализировать ссылку как Test & test = *static_cast<Test *>(nullptr)? после этой строки у меня уже будет UB, даже несмотря на то, что я ссылку нигде не использую далее?
error: reinterpret_cast from 'nullptr_t' to 'void *' is not allowed Test & test = *static_cast<Test *>(reinterpret_cast<void *>(nullptr)); error: invalid cast from type 'std::nullptr_t' to type 'void*' Test & test = *static_cast<Test *>(reinterpret_cast<void *>(nullptr));

Kathu
07.08.2018
10:37:52
мне кажется будет UB в зависимости от того, что лежит в той ячейке памяти по адресу 0x543210

Aleksandr
07.08.2018
10:38:46
а зачем такие манипуляции?
есть класс А, в конструкторе принимающий ссылку на объект класса В, её себе сохраняющий. мне в тестах надо протестировать методы класса А, которые не используют ссылку. Объект В в тестах создавать очень сложно из-за огромной связанности.

Kathu
07.08.2018
10:40:00
создай stub какой-нибудь наследник B с заглушками в методах

Aleksandr
07.08.2018
10:40:38
создай stub какой-нибудь наследник B с заглушками в методах
для этого методы должны быть виртуальными, а они - нет

мб виделить интерфейс для класса B, и работать с ним?
в идеале, конечно, да. но кодовая база огромная и старая и на это время сейчас тратить никто не даст

Kathu
07.08.2018
10:41:23
это косяк проектирования, браво юнит тесты помогли даже не будучи написанными!

Kathu
07.08.2018
10:41:56
через friend вроде бы можно было как то это обойти

но детали что-то у меня в голове не уложились

Евгений
07.08.2018
10:43:22
мб. подменить пока класс B каким либо образом?

Aidar
07.08.2018
10:43:50
Ну тебе в хедер надо залезть и посмотреть что ты сможешь подменить

Евгений
07.08.2018
10:44:14
Aleksandr надо единожды, или автоматически чтобы тесты проходили?

Google
Евгений
07.08.2018
10:45:31
@Aleksandr ну и ясное дело в хидере класса A заинклюден класс B?

Aleksandr
07.08.2018
10:47:45
Евгений
07.08.2018
10:47:50
о, ща подумаем

Aleksandr
07.08.2018
10:50:19
да вот именно что nullptr нельзя, я вот думаю просто выделить кусок памяти размером с В и с выравниванием В, потом этот кусок reinterpret_cast<>, но это такое себе

Ilia
07.08.2018
10:50:27
Ilia
07.08.2018
10:51:45
да вот именно что nullptr нельзя, я вот думаю просто выделить кусок памяти размером с В и с выравниванием В, потом этот кусок reinterpret_cast<>, но это такое себе
Но наличие 100%ного UB тем не менее не говорит, что так нельзя сделать для целей тестирования :-) Просто сделай бэкап диска , и запускай свои тесты, если что, восстановишь диск из бэкапа.

ссылку он не хранит, судя по всему. Но принимает объект по ссылке
Должен по указателю, если эта связь опциональна

Евгений
07.08.2018
10:52:40
если бы хранил ссылку, вроде forward declaration не сработал бы. Кстати, это так? Я чет засомневался

Евгений
07.08.2018
10:53:48
ссылка хранится. работает через forward
а как инициализируете ссылку?

в конструкторе списком инициализации сразу?

Aleksandr
07.08.2018
10:54:05
ага

Egor
07.08.2018
10:54:15
A a2((B&)*new int); ну вот так работает

Евгений
07.08.2018
10:54:51
A a2((B&)*new int); ну вот так работает
работать то работает, тут опасаются, что по стандарту это UB может быть, а значит может стрельнуть.

Egor
07.08.2018
10:54:59
в тестах?

Google
Евгений
07.08.2018
10:55:48
ога. Некошерно тип UB. Ну я хз насколько серьезные там тесты, но лучше все-таки попытаться избежать UB

Egor
07.08.2018
10:55:59
так это точно уб или не уб?

мы указатель отдаём, почему уб?

Ilia
07.08.2018
10:56:12
100%

Разименование nullptr -- UB.

Egor
07.08.2018
10:56:48
нет разыменования

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