template<typename U, typename F >
U GetListAndSearchName(F listGetter, const std::string& stringName)
{
std::vector<UserType> newList;
for (size_t i = 0; i < myList.size(); i++)
{
const std::vector<U>& list = listGetter(myList[i]);
for (size_t i = 0; i < list.size(); i++)
{
if (list[i]->GetName() == stringName)
return list[i];
}
}
return U();
}
以下のコードはさえUは(私はそれを作成するためのstd :: mem_fnのを使用していますテンプレートパラメータがFである私の関数ポインタの戻り値の型に存在してい後でFもstd :: functionとなる可能性があります)現在、Uの型をコンパイラに明示的に渡す必要があります。
Uの型を推定するために古いVs2010コンパイラを使用するにはどうすればよいですか?
あなたがすることはできません。戻り値の型はそれ自身では推論できません。 – NathanOliver
私は特定の標準タグを乱用しました。私はこれがC++ 03で簡単に解けるかどうかはわかりません。 – Bathsheba
あなたはC++ 03ではできません。おそらく 'decltype(auto) 'を持つC++ 14でしょう。 – 101010