大規模な C++ COM プロジェクトを VS2008 から VS2010 に移植しています。次のようなコード行があります。VS2008 プロジェクトでは正常にコンパイルされますが、VS2010 でコンパイルすると参照エラーが発生します。
std::select2nd<std::map<DWORD, ISomethingUseful*>::value_type>());
コンパイルエラーは次のとおりです。
error C2039: 'select2nd' : is not a member of 'std'
これが「非標準」関数であることは知っていますが、このコードを最初に作成した人は誰でも、VS2008 の std 名前空間でそれを見つけました。使用した #include は、VS2010 では正しくないようです。
この関数が VS2010 のどこにあるか知っている人はいますか? 具体的には、それを使用するために今すぐインクルードする必要があるヘッダー ファイルはどれですか?
編集: 今のところこの問題を回避するために、VS2008 VC\include\functional ヘッダー ファイルからコードを取得し、以下の回答で概説するように、コード ベース (ユーティリティ クラス内) に含めました。
他の誰かが提供できる洞察をいただければ幸いです。