std::pair
とstd::tuple
は基本的に特定のランタイムサポートを必要としないコンパイル時の構造であり、純粋にテンプレート構造を使用して実装できます(わかりやすい場合)。フリースタンディング(ベアメタル)プロジェクトでarm-none-eabi-gccでstd :: tupleを使用しますか?
、なぜそれがarm-none-eabi
のC++標準ライブラリからの私のベアメタルプロジェクトのときに私は#include <tuple>
、それは最終的に、これは、その後のヘッダーに達すると、それは不可能私がそれを含めるために作る、<string>
を含ん<stdexcept>
を含ん<array>
が含まれていることですarm-none-eabi-gccに含まれていないwchar.h
とbits/postypes.h
のようなものですか?私は間違って何をしていますか?
私は<utility>
からちょうど良いものを使うことができますが、std::tuple
は、私がC++標準ライブラリヘッダーを編集しなければうまくいきません。これは明らかに受け入れられません。
これは、ベアメタルプログラムがSTLの完全に正当な部分を使用するのを効果的に防止する見落としや制限ですか、それとももっと何かをやろうとしていますか?私は自分wchar.h
や他のヘッダを提供する必要がありますか?
私は、これらのヘッダーの著者がここで期待しているものの説明を本当に感謝します。
多くのThird-party STLの亜種がありますが、あなたが直面している正確なユースケース(「embedded stl」などのためのGoogle)を目指すものもあります。 GCCにバンドルされているSTLの亜種は、すべてのビルドで同じで、主に「通常の」マルチプロセスOSベースのアプリケーションを対象としています。 – oakad