Size: a a a

2020 June 22

AB

Artöm Bakri Al-Sarmi... in pro.cxx
Для тех случаев, когда нужно иметь доступ к адресу 0
источник

AT

Alexey Tkachenko in pro.cxx
по-хорошему проверять указатель надо сравнением с nullptr, а не конверсией в bool
источник

S

Serg in pro.cxx
сам C не мешшает обращаться к нулевому адресу. Обычно hardware ограничивает
источник

AB

Artöm Bakri Al-Sarmi... in pro.cxx
Alexey Tkachenko
по-хорошему проверять указатель надо сравнением с nullptr, а не конверсией в bool
По причине?
источник

AT

Alexey Tkachenko in pro.cxx
по причине того, что в общем случае любой адрес может быть валидным
источник

AP

Antony Polukhin in pro.cxx
Alexey Tkachenko
по причине того, что в общем случае любой адрес может быть валидным
всё верно, поэтому (в теории) nullptr != 0 на платформах, где можно размещать объекты по нулевому адресу
источник

AB

Artöm Bakri Al-Sarmi... in pro.cxx
Конверсия указателя в бул определена как отрицание сравнения с нулевым указателем
источник

S

Serg in pro.cxx
Alexey Tkachenko
по причине того, что в общем случае любой адрес может быть валидным
Если любой валидный - то негде хранить признак nullptr)
источник

AT

Alexey Tkachenko in pro.cxx
Могу привести аналогию с каким-нибудь int? из мира .NET-а или nullable-поля в базах данных. Неинициализированный указатель как раз таким нулевым значением и является.
источник

S

Serg in pro.cxx
Alexey Tkachenko
Могу привести аналогию с каким-нибудь int? из мира .NET-а или nullable-поля в базах данных. Неинициализированный указатель как раз таким нулевым значением и является.
в nullable в C# дополнительные биты появляются
а в C++ этого нет
std::option<T*>  Тогда уж
источник

DB

Danil Braindead in pro.cxx
Alexey Tkachenko
Могу привести аналогию с каким-нибудь int? из мира .NET-а или nullable-поля в базах данных. Неинициализированный указатель как раз таким нулевым значением и является.
В частности - это сахар вокруг булевого флага, который определяет, что в типе не задано значение
источник

AT

Alexey Tkachenko in pro.cxx
Danil Braindead
В частности - это сахар вокруг булевого флага, который определяет, что в типе не задано значение
Не совсем так. Там много подкапотной магии в JIT-е. Например boxing с Nullable<T> работает совсем не так как с другими структурами.
источник

AT

Alexey Tkachenko in pro.cxx
Serg
в nullable в C# дополнительные биты появляются
а в C++ этого нет
std::option<T*>  Тогда уж
Да, примерно так
источник

A

Alex Ф-ф-фэils!🌠︙... in pro.cxx
Mikhail Matrosov
да, я бы предпочёл видеть ошибку компиляции
+, надо в язык добавить consteval throw, чтобы он в ошибку компиляции переходил (и consteval catch, чтобы можно было обрабатывать)
источник

AB

Artöm Bakri Al-Sarmi... in pro.cxx
Alex Ф-ф-фэils!🌠︙
+, надо в язык добавить consteval throw, чтобы он в ошибку компиляции переходил (и consteval catch, чтобы можно было обрабатывать)
s/eval/expr/g, чтобы как с ифом
источник

m

magras in pro.cxx
Alex Ф-ф-фэils!🌠︙
+, надо в язык добавить consteval throw, чтобы он в ошибку компиляции переходил (и consteval catch, чтобы можно было обрабатывать)
Мне кажется или вместе с constexpr new добавляли и constexpr обработку исключений?
источник

AB

Artöm Bakri Al-Sarmi... in pro.cxx
Они могут быть в constexpr. Но пока функция не вызвана в constexpr контексте нет гарантии, что исключение будет в constexpr
источник

m

magras in pro.cxx
/paper@cppaperbot 1002
источник

p

paperbot_cpp in pro.cxx
For the request "1002":
P1002R0: Try-catch blocks in constexpr functions from Louis Dionne
https://wg21.link/p1002r0

P1002R1: Try-catch blocks in constexpr functions from Louis Dionne
https://wg21.link/p1002r1
источник

A

Alex Ф-ф-фэils!🌠︙... in pro.cxx
Александр Караев
Вопрос по boost::beast (и asio).
Возьмём пример асинхронного http сервера из документации. Является ли вызов async_write потокобезопасным? Например, в on_read я не сразу вызываю async_write, а создаю отдельный поток, который ждёт 3 секунды и после вызывает async_write. Нужно ли что-то блокировать для этого? Или проверять валидность каких-нибудь объектов?
Судя по доке - всё должно быть ок, так как никаких других асинхронных операций на данной сессии у меня после on_read быть не может (повторное чтение я не запускал, запись также ещё не началась), а значит и async_write можно звать без синхронизации.

Все объекты в shared_ptr + enable_shared_from_this, так что ссылки не протухнут
должно быть норм, пока ты не шаришь стейты..
источник