- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
auto DivisibleBy = [](int d)
{
return [d](int m) { return m % d == 0; };
};
if (ranges::any_of(v, DivisibleBy(7))) {
std::cout << "At least one number is divisible by 7\n";
}
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
0
auto DivisibleBy = [](int d)
{
return [d](int m) { return m % d == 0; };
};
if (ranges::any_of(v, DivisibleBy(7))) {
std::cout << "At least one number is divisible by 7\n";
}
https://en.cppreference.com/w/cpp/algorithm/ranges/all_any_none_of
Можно я возьму себе ник "ниеблоид"?
А так-то могу на руби перевести. Хочешь?
ЗЫ: Ниеблоиды это такие функции, которые отключают ADL.
Так названы в честь Эрика Ниеблёра
Ведь когда-нибудь ты сможешь написать:
Правда просто и понятно?
.and_then и .or_else это реальное включение в С++23:
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2021/p0798r8.html
> ... Unfortunately, chaining together many computations which may or may not produce a value can be verbose, as empty-checking code will be mixed in with the actual programming logic. As an example, the following code automatically extracts cats from images and makes them more cute:
But there’s a problem. What if there’s not a cat in the picture? What if there’s no good place to add a bow tie? What if it has its back turned and we can’t make its eyes sparkle? Some of these operations could fail.
Ну так а нахуя вообще делать этот "chaining together many computations"? Почему б не написать код в обычном стиле, с if-else? Зачем создавать себе проблемы, а потом героически их решать через какую-то херню?
Хотят чтобы покороче да с монадками.
Job Security.
Но в С++ у тебя хотя бы стат типизация, так что граница пиздеца пролегает чуть дальше.
Совсем импреративный код это тоже пиздец: говорю как жаваёб, заставший шестую джаву, где (в отличие от плюсов) даже не было "algorithms".
Я бы сказал, что если строчка с функциональной магией не вмещается в 80 символов, но надо её распиливать
Где-то в районе boost::spirit?
Так делать не нужно, если конечно это не DSL уровня "key=value", но такие "дсли" уже есть
We need to go deeper?
Не, я просто про boost::spirit. Он сам по себе уже DSL и превращает скучный парсер в интересную ёблю с шаблонами.
И что там может быть интересного в этих шаблонах? Это ж, блядь, сраное ублюдское кривое говнище, работающее поверх кривой и убогой говносистемы типов, унаследованной от сишки.
https://i.imgur.com/eP7s24N.jpg
Sounds like C++
То есть это не лексер, а такой конченый автомат со стеком.
Там пишешь рагулярки, и состояния и переходы. Он преобразует это в детерменированный автомат, и генерит класс.
Но я свой DSL не делал конечно, просто надо было вычленить одно говно из другово
Свиняе — это такая себе статическая типизация.
Это как если бы от неправильно подключенного крана в ванне у тебя текла батарея
Чтобы потом от трубы в подвале кого-то ебануло малость
Ошибки в шаблонах вроде так и выглядят
Вот они предлагают такую ебанину:
Это типа то же самое, что и
верно? А такую вот ебанину вполне намакроебить можно.
Если какую-то функциональность может намакроебить j123, то такая функциональность не нужна
* Менеджеры
* Провайдеры
* Утилы
Кстати, у яблочников есть Foundation. Ни у кого никогда такого термина я не встречал
кстати, значение Framework эпплы тоже извратили
Хотя если в структуре лежат какие-нить дескрипторы/хендлеры то там всякие штуки могут быть смешные
A mapped byte buffer and the file mapping that it represents remain valid until the buffer itself is garbage-collected.
Я потом пытаюсь писнуть в файл, и блядь "The requested operation cannot be performed on a file with a user-mapped section open."
СУУУУУУУУУУУУУКААААААААААААААААААААА
https://bugs.java.com/bugdatabase/view_bug.do?bug_id=4724038
А нету какой-нибудь сторонней либы с явным unmap'ом? Вроде на гк упоминали что-то.
Так-то я могу и на JNA написать, просто не хочется писать два раза (для прыщ и для сперм)
Будут сегфолты как в няшной если вдруг у кого-то осталась ссылочка на это говно? Или там к замапанной памяти доступ только через методы и они начнут кидать исключения?
Так что вполне реально получить болтающийся указатель.
В общем в джаве нужно с памятью аккуратно обращаться. Автоматических средств, как в С++, в ней нет(
Process finished with exit code -1073740940 (0xC0000374)
Exception code 0xc0000374 means you're facing heap corruption.