在独立(裸金属)项目上使用std::tuple with arm none eabi gcc
Using std::tuple with arm-none-eabi-gcc on a freestanding (bare-metal) project?
我的理解是,std::pair
和std::tuple
基本上是编译时构造,不需要任何特定的运行时支持,并且可以纯粹使用模板构造来实现(如果混乱的话)。
那么,为什么当我在arm-none-eabi
的C++标准库中的裸机项目中#include <tuple>
时,它包括<array>
,其中包括<stdexcept>
,最终包括<string>
,这使得我无法将其包括在内,因为这会到达像wchar.h
和bits/postypes.h
这样的头文件中,而这些头文件不包括在arm none-eabi-gcc中?我做错了什么?
我可以从<utility>
很好地使用std::pair
,但如果不编辑C++标准库头以删除有问题的include,std::tuple
就无法工作,这显然是不可接受的。
这是一种监督或限制,有效地阻止了裸机程序使用STL的完全合法部分,还是我应该在这里做更多的事情?我是否需要提供我自己的wchar.h
和其他标头??
如果能解释一下这些标题的作者在这里的期望,我将不胜感激。
假设您想为Cortex-M编译,请使用ARM自己的GCC发行版,以前称为GCC ARM Embedded。Tuple在那里工作得很好。
顺便说一句,Tuple从来都不是STL的一部分。你可能是说C++标准库。
相关文章:
- 为什么我不能在 constexpr lambda 函数中使用 std::tuple
- 在 std::tuple 上使用 std::variant 的问题
- 在构造函数中使用可变参数初始化 std::tuple
- 转发复制的 std::tuple
- 我可以将新的 std::tuple 放入内存映射区域,并在以后读回吗?
- std::tuple 可以根据其值在编译时/运行时排序吗?
- 返回 std::tuple 中的引用和值
- 如何将 boost::hana::tuple 转换为 std::变体
- 如何从可变参数模板参数创建 std::tuple<>?
- std::tuple 的自定义哈希不适用于unordered_set
- 为什么基于 int 的访问不适用于 std::get(std::tuple)?
- 带有引用的std::tuple在clang中编译失败,但在gcc中编译失败
- 尝试实现std::tie和std::tuple的小版本
- std::tuple默认构造函数,带有move可构造元素
- 来自带有 std::tuple 的地图
- Visual Studio 2017 STL 可视化工具失败了一个 std::map<MyIntrusivePtr, std::tuple<....> >
- 如何从 std::async 任务返回 std::tuple
- 为什么 std::when_any 使用 std::tuple 而不是 std::vector 作为其结果类型?
- 为什么 std::integral_constant 在爆炸 std::tuple 时是必需的?
- 创建 boost::tuple<std::string、std::string、int> 和 std::vector <int>的映射