以下代码可以使用 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
为文本)。都不应该工作吗?或者如果没有,他们不应该都给出错误吗?