ここで何が起こっているのですか?anと a
のペアを作成しようとしていますが、「マジック値」を使用するとペアを作成できますが、変数を渡すことができないようです。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) コードには問題はありませんでした。
ここで何が起こっているのかを理解できないのはちょっとばかげている気がしますが、何と言えばいいのでしょうか。