Skip to main content
2 of 2
added 37 characters in body
Thomas Weller
  • 1.1k
  • 1
  • 9
  • 24

Which C++ standard does the Arduino language support?

The "Arduino language" (as they call it) of the Arduino IDE 1 is obviously C++. Which C++ exactly?

I tried to figure it out myself (Arduino IDE 1.8.13 for Arduino Uno), but I can't conclude what C++ standard it supports.

From these tests, it seems to support C++14

  • C++ 14 variable templates are supported (template<typename T> constexpr T pi = T(3.1415926535);)

  • C++ 14 lambda captures are supported (auto lambda = [value = 1] {return value;};)

  • C++ 14 deprecated is supported ([[deprecated]]int fdep(){return 5;})

But not fully:

  • C++ 14 digit separators are not supported (int j = 2'000;)

From these tests, it even seems to support some C++17:

  • Nested namespace definitions are supported (namespace X::Y {int func(){ return 1; } })

But also not fully:

  • UTF-8 characters are not supported (char x = u8'a';)

If it partially supports everything, is there an overview like a list or table where I can look it up?

Thomas Weller
  • 1.1k
  • 1
  • 9
  • 24