1

このコードがある場合:

std::pair<Class1*,std::string> myFunc()
{
  ... 
  return std::make_pair(m_myptr, m_mystr);
}

Class1 へのポインタと std::string を含む std::pair を強制的に返すにはどうすればよいですか? 暗黙の変換が行われることは望ましくありません。テンプレート引数はここで推測されるので、どうすれば強制できますか?

パラメータを単純に明示する

return std::make_pair<Class1*,std::string>(m_myptr, m_mystr);

VS2012でエラーをスローしています

4

1 に答える 1

3

の唯一の目的make_pairは、 のテンプレート パラメータの型を推定することですpair。必要なタイプがすでに正確にわかっている場合はpair、 を呼び出す代わりに直接初期化しますmake_pair

return std::pair<Class1*,std::string>(m_myptr, m_mystr);

または (C++11):

return {m_myptr, m_mystr};
于 2013-07-19T17:07:56.113 に答える