I just started a project for my LilyGo T-Display-S3. I had some old code for an ESP8266-based board lying around, and I’m trying to make that compile for this new board. In one of the files, I try to include the C++20 ranges library, however, and that yields this error: fatal error: ranges: No such file or directory.
I can’t quite tell which compiler is being used here. Does it not support the ranges library yet?
In that case, I wonder why I had no trouble with the ESP8266. I would expect the support for the ESP32 to be better.
So, if I understand you correctly, the toolchain simply does not support this yet.
Since you mention that it’s only missing some header files, is there some way to hack around this?
Or at least some place to read more about this, like a GitHub issue?
This will be supported starting from GCC 14, see 104167 – Implement C++20 std::chrono::utc_clock, std::chrono::tzdb etc.. We will likely have a GCC 14.1-based toolchain a few months after the official upstream release. For now you can use one of the libraries which work as a drop-in replacement.
Alright, thank you for pointing me in the right direction. It’s been a while since I’ve done embedded development, and these things sure do involve a lot of different parties (PlatformIO, Arduino, Espressif), which can make it hard to know where a given problem stems from.
The answer from igrr is what I was hoping for.
Finally a change to IDF 5.x with an updated toolchain and much more functionality.
Let’s hope for a timely release of espressif32-arduino version 3.x and quick availability in PlatformIO!