次のコードは、gcc 4.7.2(mingw)で正常にコンパイルされます。
#include <unordered_map>
#include <tuple>
struct test
{
test() =default;
private:
test(test const&) =delete;
};
int main()
{
std::unordered_map<char, test> map;
map.emplace(
std::piecewise_construct,
std::forward_as_tuple('a'),
std::forward_as_tuple()
);
}
ただし、コピーコンストラクターをtest
からtest(test const&) =delete;
に変更するtest(test const&) =default;
と、テンプレートエラーの嘔吐はconst test&
に変換できないことについて文句を言うようです(ここtest
にテキストがあります)。どちらも機能しないのですか?または、そうでない場合は、両方ともエラーを発生させるべきではありませんか?