See my answer here, under the section "Why not just use the atomic_* types offered by C11 and C++11 or later?". See my comments under that answer and under this answer too.
Will the 8-bit AVRs ever support this?
Currently my work-around is the decades-old one described in my "Full example usage: how to efficiently, atomically, read shared volatile variables" here.
See also my comment:
Note: arduino-1.8.13/hardware/tools/avr/bin/avr-g++ --version shows avr-g++ (GCC) 7.3.0. I just installed the latest Arduino 2.1.0 and got the same error too. Checking its g++ version, I see it is the same: ~/.arduino15/packages/arduino/tools/avr-gcc/7.3.0-atmel3.6.1-arduino7/bin/avr-g++ --version --> output: avr-g++ (GCC) 7.3.0
Godbolt seems to think the latest AVR gcc version is 13.1.0: https://godbolt.org/z/z1a386vc1