我想寫功能func
使編譯器可以推斷出模板參數,就當我通過在std::function
工作,但不lambda表達式工作:推斷模板參數時,拉姆達傳過來的參數
template<typename TResult>
TResult func(std::function<TResult()> f)
{
return TResult();
}
int main()
{
// Visual Studio 2013
int result = func([]() { // error: 'TResult func(std::function<TResult(void)>)' : could not deduce template argument for 'std::function<TResult(void)>' from 'main::<lambda_d9d7854806072a2cb711f56185602ccb>'
return 100;
});
std::function<int()> testFunc = []() {
return 100;
};
int result2 = func(testFunc); // this works
return 0;
}
是否有可能推導出lambda的模板參數,以便該行編譯?而不是寫func<int>([](){ return 100; });
我想寫func([](){ return 100; });
謝謝迪特馬爾!有用。 –