这到底是怎么回事?
我正在尝试创建一对 anint
和 astring
如果我使用“魔术值”但似乎无法传递变量,我可以创建这对。
std::vector<std::pair<int, std::string> > num_text;
std::string text = "Smeg";
int num = 42;
// Works fine
num_text.push_back(std::make_pair<int, std::string>(42, std::string("Smeg")));
// Cannot convert parameter 2 from 'std::string' to 'std::string &&'
num_text.push_back(std::make_pair<int, std::string>(42, text));
// Cannot convert parameter 1 from 'int' to 'int &&'
num_text.push_back(std::make_pair<int, std::string>(num, std::string("Smeg")));
// Cannot convert parameter 1 from 'int' to 'int &&'
num_text.push_back(std::make_pair<int, std::string>(num, text));
// Works fine again
num_text.push_back(std::make_pair<int, std::string>(42, std::string("Smeg")));
我正在使用 VS 2012 并粘贴了一些用 VS 2008 编写的代码。无法想象这与它有什么关系,但原始 (2008) 代码没有问题。
对于无法锻炼这里发生的事情,我有点愚蠢,但我能说什么,我就是不明白。