Оскільки на C ++ 17 можна записати if
блок, який буде виконуватися точно один раз так:
#include <iostream>
int main() {
for (unsigned i = 0; i < 10; ++i) {
if (static bool do_once = true; do_once) { // Enter only once
std::cout << "hello one-shot" << std::endl;
// Possibly much more code
do_once = false;
}
}
}
Я знаю, що я можу це переосмислити, і є інші способи вирішити це, але все-таки - чи можна це написати якось так, так що немає потреби do_once = false
в кінці?
if (DO_ONCE) {
// Do stuff
}
Я думаю про функцію помічника do_once()
, що містить static bool do_once
, але що робити, якщо я хотів використовувати ту саму функцію в різних місцях? Може це час і місце для #define
? Я сподіваюся, що ні.
std::call_once
, це варіант (він використовується для нанизування різьби, але все-таки виконує свою роботу).
if
умовах, можуть бути static
. Це розумно.
if (i == 0)
? Це досить зрозуміло.