Использование C ++ 11 с семантикой перемещения - без стандартной библиотеки (и с Boost.smart_ptr) - PullRequest
0 голосов
/ 10 января 2020

Я работаю над встраиваемыми проектами, используя Zephyr RTOS со встроенными микроконтроллерами ARM, такими как серия STM32 Nucleo (Cortex M4 / 0).

В последнее время, из-за значительных улучшений поддержки C ++ в последних версиях Zephyr, я собираюсь перейти от C разработки к современному C ++.

По умолчанию Zephyr включает стандартную библиотеку C, но не STD Cpp.

Zephyr фактически добавил дополнительную поддержку стандартной библиотеки Cpp, которая, кажется, работает довольно хорошо. Однако, это требует огромного использования памяти fla sh (около 65% моих микроконтроллеров fla sh памяти, без моего кода!).

Поэтому я пытаюсь найти альтернативные способы использования современного C ++ без стандартной стандартной библиотеки (включая заголовки памяти / служебных программ).

Я решил использовать Boost.smart_ptr для интеллектуальных указателей, но мне интересно, как мне использовать семантику перемещения (std :: move) В моем случае.

Должен ли я использовать модуль Boost.Move ? Даже если я использую C ++ 1x, а не C ++ 0x?

Должен ли я самостоятельно реализовать семантику перемещения, используя прямое приведение от T & к T && ?

1 Ответ

0 голосов
/ 11 января 2020

Я только что обнаружил, что послужило причиной огромного использования STD.

В моем случае это было включение заголовка <iostream> (используется для std::cout), без него использование fla sh достаточно разумно, даже для контейнеров std.

Так что, я думаю, это решило мою проблему, теперь я могу использовать C ++ STD для своих целей.

(использование <iostream> во встроенной среде - плохая идея в любом случае, для печати просто используйте printf)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...