我有以下代码:
#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>
,那么它可以正常工作。