Arduino C++ в основном основывается на компиляторе GCC, поэтому уровень поддержки стандартного C++ зависит от версии компилятора, используемого для целевой платформы. Arduino IDE обычно использует достаточно старую версию GCC, что ограничивает набор доступных возможностей из стандартной библиотеки C++.
### Уровень поддержки C++
В стандартном Arduino, базовая поддержка C++ включает:
1. **Классы и наследование**
2. **Шаблоны**
3. **Функции как параметры**
4. **Исключения (в некоторых случаях)**
5. **Типы, такие как `uint8_t`, `int16_t` и т.д.**
Однако, многие современные возможности C++ (например, некоторые из STL, такие как `std::vector`, `std::map` и т.д.) могут быть недоступны или иметь ограниченную поддержку, особенно на менее мощных платформах, таких как Arduino Uno.
### Влияние производительности микроконтроллера
На таких платформах, как Arduino Due или ESP32, доступность функционала C++ действительно может быть выше. Эти платы имеют более мощные процессоры и больше памяти, что позволяет использовать более сложные структуры данных и возможности STL. Например, на ESP32 поддержка библиотеки C++ расширена и могут быть доступны дополнительные возможности, такие как threading и более современные элементы STL.
Однако, даже на более мощных платформах, наличие определённых функций зависит от версии компилятора и используемой библиотеки стандартного шаблона (STL). На современных версиях ESP32 с использованием платформы ESP-IDF можно ожидать лучшую поддержку стандартной библиотеки.
### Доступные библиотеки
Что касается библиотек, доступных в стандартном Arduino:
- **`<string>`** — базовая поддержка
- **`<vector>`, `<map>`** — могут не поддерживаться на более старых версиях, но доступны в некоторых окружениях, таких как ESP32
- **`<memory>`** — поддерживается частично, динамическое распределение памяти через `malloc` и `free`
- **`<iterator>`** — основные функции поддержки итераторов могут быть доступны, но не гарантировано
### Заключение
Если вы хотите использовать современные возможности C++, рекомендуется использовать более новые платформы и компиляторы, такие как ESP32, где поддержка C++ более развита. Для базового использования в стандартном Arduino доступен ограниченный набор возможностей C++, и это стоит учитывать при разработке проектов.