170 похожих чатов

Можно как-то написать assert с несколькими строками? Тип assert(std::vector<int> & a

= obj->getA();
std::count(a.begin(),a.end(), 5) == 0)

33 ответов

26 просмотров

А зачем?

Егор (Дима)- Автор вопроса
Danya🔥
А зачем?

не выходит в одну строку записать проверку

Егор (Дима)- Автор вопроса
Егор (Дима)- Автор вопроса
Constantine Drozdov
напиши лямбду

о кстати норм капец всрато конечно(

Егор (Дима)
обновил

Ну вынеси вектор за ассерт и сделай свое дело

Егор (Дима)- Автор вопроса
Егор (Дима)
мне это в релизе не нужно

Ну я не думаю что ссылка на вектор получается сложным путем + Я надеюсь компиляторы достаточно умны, чтобы выкинуть неиспользуемую переменную

Егор (Дима)- Автор вопроса
Danya🔥
Ну я не думаю что ссылка на вектор получается слож...

У меня достаточно рук, чтобы бензопила за неиспользуемые переменные ради отладочных проверок

Егор (Дима)
ну вектор для примера просто

Ну в более сложном случае ок

Егор (Дима)
так не будет варна же

Код сложнее становится

Егор (Дима)- Автор вопроса
место имение рейверы
Используй оператор запятая

да всё читается сложно, я в итоге просто в функцию вынес

Лямбда - хорошо

Егор (Дима)- Автор вопроса
Alexander Karaev
Лямбда - хорошо

assert([&](){ const std::vector<Foo> fee = Bar->getFoo(); return std::count(std::begin(fee), std::end(fee), Foo{1,2,3}) != 0; }());

Егор (Дима)- Автор вопроса
Егор (Дима)- Автор вопроса
Alexander Karaev
это в первый раз так

а на второй раз оно будет выглядеть лучше assert(IsBarHasFoo(Bar, Foo{1,2,3}))?

Егор (Дима)
assert([&](){ const std::vector<Foo> fee = Bar...

лучше assert([&] (auto&& fee) { return std::count(std::begin(fee), std::end(fee), Foo{1,2,3}) != 0; } (Bar->getFoo()))

Егор (Дима)
assert([&](){ const std::vector<Foo> fee = Bar...

getFoo имеет невнятную ссылочность, такие переменные лучше передавать в лямбду, а не объявлять внутри - лайфтайм выражения даёт намного меньше возможностей поймать в ногу

Егор (Дима)- Автор вопроса
Егор (Дима)
не понял, там же у fee нет ссылки

Есть ещё эстетический момент - в такой форме намного очевиднее, какой функции не хватает для нормальной записи мысли в одну строку.

Егор (Дима)
вот это более весомо как-то

Наоборот. Кстати говоря, есть (назовем это ограничение транзитивности), что в сложной системе плохо прыгать через слой абстракции, так что ещё непонятно, что недостаток функций не у Bar

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Гайс, вопрос для разносторонее развитых: читаю стрим с юарта, нада выделять с него фреймы с определенной структурой, если ли чо готовое, или долбаться с ринг буффером? нада у...
Vitaly
9
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
длина пакета фиксированная, или меняется?
Okhsunrog
7
Карта сайта