Обновить
3

Пользователь

0,2
Рейтинг
4
Подписчики
Отправить сообщение
namespace r = std::ranges;
namespace v = std::views;

auto selected = collection
              | v::filter([](const Person& p) noexcept {
                    return p.last_name.starts_with({u8"пу", u8"зе"}, case_insensitive);
                })
              | r::to<std::vector>();

r::sort(selected, {}, &Person::first_name);

Не удержался)

Про ADL не упомянули самую мякотку

class Secret
{
    private:
    int i_am_private = 33;
};

template <auto M>
struct Loophole {
    friend auto AdlMagic(Secret const&) noexcept { return M; }
};

template struct Loophole<&Secret::i_am_private>;
auto AdlMagic(Secret const&) noexcept;

int main(void)
{
    Secret s;
    auto i_am_private = AdlMagic(s);
    std::cout << s.*i_am_private <<  std::endl;
    return 0;
}

И это работает!)

https://godbolt.org/z/rn1GYKb4M

Там есть навигация. Карты прожорливые. Надо где-то себе достать этот телефон...

Ну, возможно и на C# писать, например) Там можно и такое

var prefixes = new[] { "пу", "зе" };

var result =
    from person in collection
    let lastName = person.LastName.ToLowerInvariant()
    where lastName.Length >= 2
       && prefixes.Contains(lastName[..2])
    orderby person.FirstName
    select person;

Как угодно будет выглядеть, ведь на С++ есть препроцессор и перегрузка операторов)

Так что на С++ можно написать API любой степени читаемости, хоть бы и такой же как в Ruby. Вопрос во времени разработки, поддержки и исправлению ошибок)

Почему C++ или Rust никогда не смогут заменить Python

Потому что действует принцип неуловимого Джо? Перефразируя анекдот:

...

- А, это у нас Python, его не могут заменить даже С++ и Rust

- Почему?

- Да потому что никто и не пытается

collection.select{|person| %w[пу зе].include? person.last_name.downcase[0..1])}.sort_by(&:first_name)

Мне бо-бо на это смотреть) А я на С++ пишу, я знаю что такое боль)

Стандарт определяет всего 3 вида связывания:

И прямо по ссылке 4 вида связывания :)

Вы забыли "Модульное". А оно самое упоротое, кстати, и доставляет парочку прикольных проблем :)

UPD
Погуглил, кажется пофиксили те проблемы, о которых я думал. Они были в Modules TS ещё)

Ну, например, я прямо сейчас смотрю на CI, который занимает 2 часа на каждый PR. PVS в нём - это минут 10. Будет занимать 20 - я не расстроюсь, мне уже пофигу :D В моей голове что 100 быстрых детекторов, что 100 "не так чтобы очень быстрых" - одинаковы)

Потому что std::start_lifetime_as реализовали в GCC 16 только этой весной) А Clang до сих пор не завезли. В MSVC вроде тоже только весной добавили.

Так вроде в этом и смысл любой защиты? Заставить подстраиваться так долго, чтобы злоумышленник (по крайней мере большая часть из них) - сочли это неразумной тратой времени.

Так что писать надо сразу хорошо.

Надо писать в соответствии с требованиями :) Может и не нужны никому 100 быстрых детекторов. Впрочем, если дают развлекаться - только радуюсь за вас)

Я (условно я) пытаюсь написать обработку аудио, а не кольцевой буфер. Зачем мне писать кольцевой буфер?

strides[???? i ????] = acc;

enumerate : просто существует)

Медленный С++ код – это противоестественно

Какое-то странное утверждение) Пока нет требований к производительности, код должен быть понятным) На любом языке) А остальное вообще пофиг.

Иногда включаю Youtube. Там оч удобно голосом видоскики искать. Ну, иногда пользуюсь онлайн кинотеатрами. Всё это в принципе есть и на ТВ приставках.

Впрочем, мне глубоко похрену что у меня дома стоит прослушка. Ибо принцип неуловимого Джо всё ещё действует.

Ну, на cppreference честно написано

There are no guarantees as to the quality of the random sequence produced. In the past, some implementations of rand() have had serious shortcomings in the randomness, distribution and period of the sequence produced (in one well-known example, the low-order bit simply alternated between 1 and 0 between calls).

rand() is not recommended for serious random-number generation needs. It is recommended to use C++11's random number generation facilities to replace rand().(since C++11)

Это уточнение вскрывает ещё одну проблему: диалекты ASM :) Целый зоопарк диалектов.

В чем смысл всё это учить и помнить, если есть Си)

Ну, если брать конкретно rand(), то это наследие С, он компилируется где угодно даже на самой распоследней ручке, включая bare metal, и никакие требования к источнику энтропии в стандарте особо не закрепить.

В С++, впрочем, история похожая.

Ну, а на счёт криптографических примитивов всегда - ломается zero cost abstraction) Я знаю что всем наплевать, но комитет часто прикрывается этой хернёй)

С DOOM опять же не совсем корректный пример) Я не знаю как они использовали эти случайные числа, но скорее всего они озаботились о статистических свойствах циферок в кольцевом буфере.

Я говорил о совсем вырожденных случаях, когда нам просто нужно чтобы "изменения были", но мы вообще не заинтересованы в статистических свойствах этих изменений.

Например, учебные задачи или тестирование, когда нам нужно внести некий хаос в систему. Впрочем даже в последнем случае нам нужно понимать параметры этого хаоса)

Блин, реально ведь сложно придумать ситуацию, когда мы не хотим знать источник энтропии для засеивания ГПСЧ и распределение. Возможно только о криптостойскости мы иногда не хотим думать

1
23 ...

Информация

В рейтинге
3 027-й
Зарегистрирован
Активность