Задача такая: выполнить какой-то код ровно один раз во время жизни нашей программы. Решение вполне понятное:
void init() {
static bool unused = [] {
std::cout << "printed once" << std::endl;
return true;
}();
}При вызове такой функции сколько угодно раз вывод будет всегда один и тот же (даже из разных потоков, сможете ответить почему?):
printed onceА что, если я хочу вызвать какой-то код ровно n раз? Об этом и предлагаю вам подумать : )
Как обычно, если никто не пробьёт, ответ через пару дней.
UPD: хотелось бы увидеть решение руками, а не с чем-то вроде std::call_once (но ими всё равно можно поделиться :) ).