据我了解,std::pair
和std::tuple
基本上是编译时构造,不需要任何特定的运行时支持,并且可以纯粹使用模板构造实现(如果混乱)。
那么为什么当我#include <tuple>
来自arm-none-eabi
的C ++标准库的裸机项目时,它包括<array>
,其中包含<stdexcept>
,最后包含<string>
{1}},使我无法将其包含在内,然后进入不包含在arm-none-eabi-gcc中的wchar.h
和bits/postypes.h
这样的标题中?我做错了什么?
我可以std::pair
使用<utility>
,std::tuple
如果没有我编辑C ++标准库标题来删除有问题的包含就行不行,这显然是不可接受的。< / p>
这是一种监督或限制,有效地防止裸机程序使用STL的完全合法部分,或者我应该在这里做更多的事情?我是否需要提供我自己的wchar.h
和其他标题??
我非常感谢这些标题的作者在这里所期待的解释。
答案 0 :(得分:1)
假设您要为Cortex-M进行编译,请使用ARM's own GCC distribution,以前称为GCC-ARM-Embedded。元组在那里工作得很好。
顺便说一句,never was的STL部分。你可能想说C++ Standard Library。