2
につながる:C++ - unordered_map内unique_ptrを、私は私のあいまいなエラーを与えているプログラムを持っているので、ではなく、私はこの簡易版作ったコードの行数百人の投稿エラー
#include <unordered_map>
#include <memory>
#include <utility>
struct s
{
int height;
std::unordered_map<std::string, std::unique_ptr<s>> children;
};
void InitWD(s &wd_ptr, int height, std::unordered_map<std::string, std::unique_ptr<s>> children) //Initialize a WindowData
{
wd_ptr.children=children;
wd_ptr.height=height;
}
int main()
{
s test;
test.height=1;
test.children=std::unordered_map<std::string, std::unique_ptr<s>>();
std::unique_ptr<s> ptr(new s);
InitWD(*ptr, 2, std::unordered_map<std::string, std::unique_ptr<s>>());
test.children.emplace("two", std::move(ptr));
}
エラー(GCCを4.8)11 C++でのunique_ptr
またはunordered_map
のいずれかについてですが、私は信じている:おそらくどこかのコードで
error: use of deleted function 'constexpr std::pair<_T1, _T2>::pair(const std::pair<_T1, _T2>&) [with _T1 = const std::basic_string<char>; _T2 = std::unique_ptr<s>]'
unique_ptr
がコピーされていますか?そのようなエラーを引き起こすと思う唯一のことです。
ご協力いただきましてありがとうございます。
これは本当に面白いです。 g ++は通常どのコード行を表示しますか?g ++ v6.3(http://coliru.stacked)の場合でも、[この例では明確にはありません](http://coliru.stacked-crooked.com/a/80e9b5ae43362e32) -crooked.com/a/c19194654682c731)。これはgccのバグとして提出する必要がありますか? – Justin
@Justinそう思う。あなたが望むならば、バグを報告することはできますが、おそらく既存のバグと重複していると思うので気にしないでしょう。私はチェックするのが面倒です。 – Brian