从参数的返回类型中推导出函数返回类型

Kad*_*mir 3 c++ templates visual-studio-2010 c++03

我有下面的代码

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();
}
Run Code Online (Sandbox Code Playgroud)

甚至U存在于我的函数指针的返回类型中,它是模板参数F(我以后使用std :: mem_fn来创建它可能也是std :: function)当前我需要显式地将U的类型传递给编译器.

如何让我的旧Vs2010编译器推断出U的类型?

n. *_* m. 6

2010年的作品:

template<typename F>
auto GetListAndSearchName (F listGetter, const std::string& stringName) 
  -> decltype(listGetter(myList[0])[0])
Run Code Online (Sandbox Code Playgroud)