私はこのMCVEを持っている:はstdするコピー可能/移動可能なオブジェクトではありません含む構造体を追加::マップ
#include <atomic>
#include <map>
#include <string>
struct foo
{
int intValue;
std::atomic_bool bar;
foo(int intValue) : intValue(intValue) {};
};
std::map<std::string, foo> myMap;
int main()
{
myMap.emplace("0", 1234);
}
std::atomic
がコピー可能でも移動可能でもないので、それがコンパイルされません。
私の質問:
どのように私はstd::map
コンテナにコピー可能ではない/移動可能なオブジェクトを含むクラスを追加することができますか?
本当に 'const char *'をマッピングのキーとして使うべきではありません。これは、それが指すものではなく、キーである*ポインタ*になるからです。 –
@JoachimPileborg:これは 'MCVE 'です。実際のプロジェクトでは 'std :: string'と' foo'ははるかに複雑です。私はそれを本当に非常に小さくしたいと思っていました。 Thx –
今後の参考として、MCVEを作成する際には、他の可能性のあるエラーを追加しないようにしてください。混乱するだけです。実際には*できるだけ実際のプログラムに近いMCVEを作成してください。 –