在独立 (bare-metal) 项目中使用 std::tuple 和 arm-none-eabi-gcc?

Using std::tuple with arm-none-eabi-gcc on a freestanding (bare-metal) project?

据我了解,std::pairstd::tuple 基本上是 compile-time 不需要任何特定运行时支持的构造,并且可以纯粹使用模板实现(如果杂乱无章)构造。

那么为什么当我在 arm-none-eabi 的 C++ 标准库的裸机项目中 #include <tuple> 时,它包含 <array>,其中包含 <stdexcept> 最后包含 <string>,这让我无法包含它,因为它会像 wchar.hbits/postypes.h 一样进入 headers,而 arm-none-eabi-gcc 中没有包含?我做错了什么?

我可以使用 <utility> 中的 std::pair,但是如果我不编辑 C++ 标准库 headers 来删除有问题的包含,std::tuple 就无法工作,这显然是不可接受的。

这是有效防止裸机程序使用完全合法的 STL 部分的疏忽或限制,还是我应该在这里做更多的事情?我需要提供我自己的wchar.h和其他headers吗??

如果能解释一下 headers 作者的期望,我将不胜感激。

假设您要针对 Cortex-M 进行编译,请使用 ARM's own GCC distribution,以前称为 GCC-ARM-Embedded。元组在那里工作正常。

顺便说一下,元组 never was part of the STL. You probably meant to say C++ Standard Library