Peter Cech wrote: > # pragma omp parallel for > for (int i = 0; i < 10; ++i) { > # pragma omp critical > Class instance = create_and_register_new_instance(); > > instance.do_something(); > } But still, turning on OpenMP here creates a new inner block scope, as you suggested the first time, so the compiler is right to throw the error. If you mean to keep the original block intact, you will need the additional set of {}.