Например, рассмотрим следующий код:
Код: Выделить всё
#include
#include
template
int count_leading_good(Ts &&...ts) {
int N{0};
([&](auto &&t) -> bool {
if (t.good) {
N += 1;
return true;
}
return false;
}(std::forward(ts)) && ...);
return N;
}
struct A {
bool good{true};
};
struct B {
bool good{false};
};
int main(int argc, char *argv[]) {
assert(count_leading_good(A{}, A{}, A{}, B{}, A{}) == 3);
}
Существует ли какое-то правило C++, которое гарантирует это?
Обратите внимание, что результат логического && не используется.
Подробнее здесь: https://stackoverflow.com/questions/797 ... de-effects
Мобильная версия