[Live-devel] C++20 dependency taken in 2023.06.16 or .20

Warren Young warren at etr-usa.com
Wed Oct 9 18:42:59 PDT 2024


On attempting to update an existing code base that builds under C++17, we’re now getting this build error:


live555/BasicUsageEnvironment/BasicTaskScheduler.cpp: In member function ‘virtual void BasicTaskScheduler::SingleStep(unsigned int)’:
live555/BasicUsageEnvironment/BasicTaskScheduler.cpp:191:40: error: ‘struct std::atomic_flag’ has no member named ‘test’
  191 |       if (fTriggersAwaitingHandling[i].test()) {
      |                                        ^~~~
make[1]: *** [Makefile:4441: live555/BasicUsageEnvironment/lib_liblivemedia_la-BasicTaskScheduler.lo] Error 1


This is because std::atomic_flag.test() does not exist before C++20, per https://en.cppreference.com/w/cpp/atomic/atomic_flag

Changing our -std=gnu++17 flag to -std=gnu++20 does bypass the error, but it means the rest of our code base also has to now build under that version, a change we were avoiding taking on because $REASONS.

Was this change in minimum C++ version intentional?


More information about the live-devel mailing list