C++11 使用C++;11带移动语义-不带标准库(带Boost.smart\u ptr)

C++11 使用C++;11带移动语义-不带标准库(带Boost.smart\u ptr),c++11,move-semantics,boost-smart-ptr,zephyr-rtos,boost-move,C++11,Move Semantics,Boost Smart Ptr,Zephyr Rtos,Boost Move,我正在从事嵌入式项目,使用ARM嵌入式微控制器,如STM32核子系列(Cortex M4/0) 最近,由于泽弗最近版本的C++支持明显改进,我正在考虑从C开发到现代C++。p> 默认情况下,Zephyr包括C标准库,但不包括Cpp的STD Zephyr实际上为Cpp的标准库添加了可选支持,这似乎工作得很好。然而,它需要大量的闪存使用量(我的微控制器中有近65%是闪存,没有我的代码!) >我试图寻找替代现代C++的方法,而不需要实际的标准库(包括内存/实用程序头)。p> 我考虑过使用智能指针,但

我正在从事嵌入式项目,使用ARM嵌入式微控制器,如STM32核子系列(Cortex M4/0)

最近,由于泽弗最近版本的C++支持明显改进,我正在考虑从C开发到现代C++。p> 默认情况下,Zephyr包括C标准库,但不包括Cpp的STD

Zephyr实际上为Cpp的标准库添加了可选支持,这似乎工作得很好。然而,它需要大量的闪存使用量(我的微控制器中有近65%是闪存,没有我的代码!)

<> >我试图寻找替代现代C++的方法,而不需要实际的标准库(包括内存/实用程序头)。p> 我考虑过使用智能指针,但我想知道在我的例子中应该如何使用移动语义(std::move)

我应该使用模块吗?即使我使用的是C++1x而不是C++0x


我应该自己使用移动语义吗?

我刚刚发现是什么导致了STD的大量闪存使用

在我的例子中,它包含了
标题(用于
std::cout
),没有它,即使使用std容器,flash的使用也是合理的

所以我想它解决了我的问题,我现在可以用C++ STD来实现。
(在嵌入式环境中使用
,打印时只需使用
printf

您只需在一行中实现
std::move
。。。好的,您也需要
remove_reference
,可能需要进行一些格式化。但是,如果您只需要标准库中的
std::move
,那么就不会有任何问题。Boost(以及几乎任何CPP代码)依赖于std,即包括std头。我宁愿避免std、异常和RTTI@IgorR. 如果我没说错的话,Boost在其内部实现中会有回退,如果没有包含STD头的话。我已经成功地在没有STD的情况下使用了Boost.DI,还将尝试smart_ptr&move,但我注意到它们的源代码中也有回退…@P_uj_uu当然我正在避免任何反嵌入式机制,如异常和RTTI。但智能指针似乎对我的需求很有价值,所以我不想放弃。