Глянул репозиторий. Не знаю как остальным - мне не понравилось. Смотрел файлы из подкаталога net. Много кода в одну строку, это стиль такой? Дальше логика замешана с абстракциями разных платформ, WIN32 и Linux - все одной сплошной стеной, в одном файле. Кстати, почему только Linux, а где BSD, MacOS? И epoll не всегда лучший вариант - по мне правильнее было бы предоставить пользователю выбрать какой мультиплексор ему больше подойдет. PS. Move для C++98 пишется не так - текущая реализация просто опасна. Пример хорошей реализации move-семантики для C++98/03 cм. здесь.
У нас как-то контекст съехал. Человек в начале ветки сказал, что нулевой адрес в PDP-11 (уже переплавленной на золото, кстати) мог использоваться для адресации. Я на это ответил, что концепции нулевого указателя и нулевого адреса - различны с точки зрения стандарта (т.е. на практике это означает, что если в какой-то реализации нулевой адрес использовать для адресации можно, то для представленяи нулевого указателя будет выбрано какое-то другое значение - не ноль, и такие примеры были). Далее вы попытались меня поправить, приведя в пример описание нулевого указателя из стандарта. На что я опять же вам ответил, что приведенная вами в пример запись относится к форме записи такого указателя в исходном коде, а не к его битовому представлению. А потом контекст зачем-то поехал в сторону "а покажи-как мне реализацию где сейчас не так". Но это уже out of topic. Во-первых потому, что речь изначально шла про древнюю технику, а во-вторых потому, что отсутствие подобных современных машин не опровергает ничего из вышесказанного.
И да, я тут своего ничего не говорю. То, что я сказал, и то, что написано в FAQ - это просто пересказ человеческим языком того, что написано в стандарте.
То, что " NULL это ((void*)0) по стандарту" никак не отменяет того, о чем я сказал. Этот ноль в исходнике не означает нули в битовом представлении. Даже если технически оказывается так, что репрезентация этого нуля в битах тоже нули, семантически - это разные нули. Литерал "ноль", как и nullptr, как и NULL - это лишь удобные записи для обозначения нулевого указателя, а конкретные биты компилятор сгенерит сам, вы напрямую не можете никак не это повлиять.
Т.е. Вы на проекте под Astra Linux 1.7.x используете компилятор GCC 8.3.0, который использует урезанную версию C++20? Тогда, наверное, Вам хорошо известно, что в этой версии компилятора функции C++20 ограничены.
Думаю он просто таскает более новый рантайм от свежего GCC вместе с проектом. Так легко можно добиться двоичной переносимости собранного С++ кода. Я и сам так когда-то делал.
Может быть я просто легче к этому отношусь. У меня всегда было много таких знакомых. Без проблем признавал для себя, что они умнее и им "можно" поэтому быть такими. Это честная сделка, потому что обычно у таких людей много чему можно научиться.
Справедливости ради, у автора статьи неплохой слог, его текст читается так же легко, как льется вода. Без начитанности такого добиться будет непросто. Это вообще первая статья за последнее время, которую я прочитал целиком и с большим удовольствием от подачи. Большинство статей на хабре ужасны с этой точки зрения, косноязычны и просторечны. Не берусь судить об экспертности изложенного, т.к. сам не являюсь в этих делах специалистом. Поэтому может быть ваша картинка тут и подходит в этом смысле, но начитанность у автора совершенно точно присутствует. В этом, как мне кажется, он не лукавит.
Глянул репозиторий. Не знаю как остальным - мне не понравилось. Смотрел файлы из подкаталога net. Много кода в одну строку, это стиль такой? Дальше логика замешана с абстракциями разных платформ, WIN32 и Linux - все одной сплошной стеной, в одном файле.
Кстати, почему только Linux, а где BSD, MacOS? И epoll не всегда лучший вариант - по мне правильнее было бы предоставить пользователю выбрать какой мультиплексор ему больше подойдет.
PS. Move для C++98 пишется не так - текущая реализация просто опасна. Пример хорошей реализации move-семантики для C++98/03 cм. здесь.
Обычно это означает, что для нее не нашлось статической версии.
Как обычно, больше всех претензий к C++ у тех, кто не пишет на нем в прод. Уже который раз замечаю.
Надо написать, раз уж речь зашла.
Так было до Qt5. Теперь toStdString() всегда приводит к toUtf8() под капотом.
Вы совсем уже с ума сошли со своим хейтом? Такие операторы были с самого начала стандартизации C++.
Но это же дореволюционный русский, а не старославянский :)
Да, согласен.
Естественно. Нулевой указатель - это абстракция компилятора, я об этом еще вчера сказал.
У нас как-то контекст съехал. Человек в начале ветки сказал, что нулевой адрес в PDP-11 (уже переплавленной на золото, кстати) мог использоваться для адресации. Я на это ответил, что концепции нулевого указателя и нулевого адреса - различны с точки зрения стандарта (т.е. на практике это означает, что если в какой-то реализации нулевой адрес использовать для адресации можно, то для представленяи нулевого указателя будет выбрано какое-то другое значение - не ноль, и такие примеры были). Далее вы попытались меня поправить, приведя в пример описание нулевого указателя из стандарта. На что я опять же вам ответил, что приведенная вами в пример запись относится к форме записи такого указателя в исходном коде, а не к его битовому представлению. А потом контекст зачем-то поехал в сторону "а покажи-как мне реализацию где сейчас не так". Но это уже out of topic. Во-первых потому, что речь изначально шла про древнюю технику, а во-вторых потому, что отсутствие подобных современных машин не опровергает ничего из вышесказанного.
Там по ссылке есть ссылки на примеры.
И да, я тут своего ничего не говорю. То, что я сказал, и то, что написано в FAQ - это просто пересказ человеческим языком того, что написано в стандарте.
То, что " NULL это ((void*)0) по стандарту" никак не отменяет того, о чем я сказал. Этот ноль в исходнике не означает нули в битовом представлении. Даже если технически оказывается так, что репрезентация этого нуля в битах тоже нули, семантически - это разные нули. Литерал "ноль", как и nullptr, как и NULL - это лишь удобные записи для обозначения нулевого указателя, а конкретные биты компилятор сгенерит сам, вы напрямую не можете никак не это повлиять.
Еще одна ссылочка для понимания: https://c-faq.com/null/machnon0.html
Указатель с адресом ноль и нулевой указатель - это разные вещи (в общем случае). https://c-faq.com/null/varieties.html
Говорить, наверное, можно как угодно. А вот писать статьи всё-таки лучше правильно.
Думаю он просто таскает более новый рантайм от свежего GCC вместе с проектом. Так легко можно добиться двоичной переносимости собранного С++ кода. Я и сам так когда-то делал.
И это ещё не всё.
В итоге почему удалили-то, выяснилось?
Может быть я просто легче к этому отношусь. У меня всегда было много таких знакомых. Без проблем признавал для себя, что они умнее и им "можно" поэтому быть такими. Это честная сделка, потому что обычно у таких людей много чему можно научиться.
Справедливости ради, у автора статьи неплохой слог, его текст читается так же легко, как льется вода. Без начитанности такого добиться будет непросто. Это вообще первая статья за последнее время, которую я прочитал целиком и с большим удовольствием от подачи. Большинство статей на хабре ужасны с этой точки зрения, косноязычны и просторечны. Не берусь судить об экспертности изложенного, т.к. сам не являюсь в этих делах специалистом. Поэтому может быть ваша картинка тут и подходит в этом смысле, но начитанность у автора совершенно точно присутствует. В этом, как мне кажется, он не лукавит.
Вместо Старуструпа можно взять Липпмана.