没有`std :: piecewise_construct`的`std :: unordered_map` \ templace错误

时间:2014-07-14 18:46:58

标签: c++ c++11 unordered-map

我有以下代码:

#include <complex>
#include <tuple>
#include <unordered_map>
using namespace std;

int main()
{
    unordered_map<string, complex<double>> um;
    um.emplace(piecewise_construct, make_tuple("test1"), make_tuple(1,1));// works
    // um.emplace("test2", {1,1}); // error here  
    complex<double> z{1,1};
    um.emplace("test3", z); // this works
}

我不完全理解为什么我在注释行上收到错误。 unordered_map正在放置pair<string, complex<double>>,而complex<double>有一个初始化列表类型构造函数,为什么不能将该对构造到位?如果我将init-list {1,1}替换为之前构建的complex<double>,那么它可以正常工作。

0 个答案:

没有答案