Size: a a a

Конференция C++ Russia

2020 August 02

AV

Alexey Veselovsky in Конференция C++ Russia
более того - функции высшего порядка там тоже есть 😄
источник

K

Kirill in Конференция C++ Russia
вечер начинает быть толстым)
источник

A

Alex Ф-ф-фэils!🌠︙... in Конференция C++ Russia
Alexey Veselovsky
более того - функции высшего порядка там тоже есть 😄
Опять без пруфов?
источник

K

Kirill in Конференция C++ Russia
Alex Ф-ф-фэils!🌠︙
Опять без пруфов?
почему?

принял void*, а это указатель на функцию
источник

m

magras in Конференция C++ Russia
Pavel Zhigulin
Это правда, но как бы классических new / delete там тоже нет, а потом выделение и освобождение памяти во многих местах только ручками) Все ошибки в стиле


if (condition)
{
   goto cleanup;
}
Так RAII не требует и new & delete. В конце концов есть scope guard'ы, которые позволяют просто выполнить произвольный код в деструторе.
источник

AV

Alexey Veselovsky in Конференция C++ Russia
Alex Ф-ф-фэils!🌠︙
Опять без пруфов?
функция высшего порядка - это функция принимающая в качестве аргументов другие функции и умеющая с ними работать. это всё в Си есть
источник

AZ

Alexander Zaitsev in Конференция C++ Russia
Kirill
почему?

принял void*, а это указатель на функцию
принял void*, а это на самом деле void*****
источник

AV

Alexey Veselovsky in Конференция C++ Russia
Kirill
почему?

принял void*, а это указатель на функцию
не обязательно void*, можно и типами обмазаться же
источник

A

Alex Ф-ф-фэils!🌠︙... in Конференция C++ Russia
Kirill
почему?

принял void*, а это указатель на функцию
А, калбеки
источник

PZ

Pavel Zhigulin in Конференция C++ Russia
Alexander Zaitsev
а можно пример любого опенсорсного проекта с этой проблемой?
В open source не видел, но сталкивался два раза лично. Оба раза были связаны с багами компилятора правда. А может и не багами) Правда архитектуры были сильно специфичные или просто древние - MIPS (Байкал на самом деле) и ARMv7.
источник

A

Alex Ф-ф-фэils!🌠︙... in Конференция C++ Russia
Alexey Veselovsky
функция высшего порядка - это функция принимающая в качестве аргументов другие функции и умеющая с ними работать. это всё в Си есть
Ок да
источник

AZ

Alexander Zaitsev in Конференция C++ Russia
Pavel Zhigulin
В open source не видел, но сталкивался два раза лично. Оба раза были связаны с багами компилятора правда. А может и не багами) Правда архитектуры были сильно специфичные или просто древние - MIPS (Байкал на самом деле) и ARMv7.
о, наконец-то хороший ответ. Спасибо. А давно было?
источник

K

Kirill in Конференция C++ Russia
Alexander Zaitsev
принял void*, а это на самом деле void*****
да, и сидишь дебажишь год
источник

AT

Alexey Tkachenko in Конференция C++ Russia
Alexey Veselovsky
функция высшего порядка - это функция принимающая в качестве аргументов другие функции и умеющая с ними работать. это всё в Си есть
Каррирование в си - ну его нафиг
источник

m

magras in Конференция C++ Russia
magras
Так RAII не требует и new & delete. В конце концов есть scope guard'ы, которые позволяют просто выполнить произвольный код в деструторе.
То есть вместо
resource r = init;
...
if (err)
 goto cleanup;
...
cleanup:
free(r);

пишется
resource r = init;
auto resouce_free_guard = scope_guard([&]{ free(r); });
if (err)
 return;
источник

AT

Alexey Tkachenko in Конференция C++ Russia
magras
То есть вместо
resource r = init;
...
if (err)
 goto cleanup;
...
cleanup:
free(r);

пишется
resource r = init;
auto resouce_free_guard = scope_guard([&]{ free(r); });
if (err)
 return;
Веселее когда ресурсов несколько
источник

K

Kirill in Конференция C++ Russia
Alexey Veselovsky
не обязательно void*, можно и типами обмазаться же
можно, я не спорю)
источник

AV

Alexey Veselovsky in Конференция C++ Russia
Alexey Tkachenko
Каррирование в си - ну его нафиг
это не карирование же
источник

PZ

Pavel Zhigulin in Конференция C++ Russia
Alexander Zaitsev
о, наконец-то хороший ответ. Спасибо. А давно было?
Первый раз в начале 2016-го, а второй раз в конце 2018
источник

A

Alex Ф-ф-фэils!🌠︙... in Конференция C++ Russia
magras
То есть вместо
resource r = init;
...
if (err)
 goto cleanup;
...
cleanup:
free(r);

пишется
resource r = init;
auto resouce_free_guard = scope_guard([&]{ free(r); });
if (err)
 return;
Проще авто_делитер фигануть
источник