Что здесь происходит?
Я пытаюсь создать пару int
и string
, и я могу создать пару, если я использую "магические значения", но не могу передать переменные.
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) не было проблем.
Я немного чувствую себя немного глупым, потому что не способен тренироваться, что здесь происходит, но что я могу сказать, я просто не понимаю.