Использование std :: tuple с arm-none-eabi-gcc в автономном (голом металле) проекте?

Насколько я понимаю, что std::pair а также std::tuple в основном это конструкции времени компиляции, которые не требуют какой-либо конкретной поддержки времени выполнения, и могут быть реализованы (если неаккуратно) исключительно с использованием шаблонных конструкций.

Так почему же, когда я #include <tuple> в моем голом металлическом проекте от arm-none-eabiстандартная библиотека C ++, включает <array> который включает в себя <stdexcept> который, наконец, включает в себя <string>делая невозможным для меня включить его, так как это затем достигает заголовков, таких как wchar.h а также bits/postypes.h которые не включены в arm-none-eabi-gcc? Что я делаю неправильно?

я могу использовать std::pair просто отлично от <utility> но std::tuple просто не получится, если я не отредактирую заголовки стандартной библиотеки C ++, чтобы удалить ошибочное включение, что явно недопустимо.

Является ли это упущением или ограничением, которое эффективно препятствует использованию совершенно легальных программ совершенно легальными частями STL, или я должен делать что-то большее здесь? Нужно ли мне предоставлять мой собственный wchar.h и другие заголовки ??

Я был бы очень признателен за объяснение того, что авторы этих заголовков ожидают здесь.

0

Решение

Предполагая, что вы хотите скомпилировать для Cortex-M, используйте ARM собственный дистрибутив GCC, ранее назывался GCC-ARM-Embedded. Кортеж отлично работает там.

Кстати, Tuple никогда не был часть СТЛ. Вы, вероятно, хотели сказать Стандартная библиотека C ++.

1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector