#include <iostream>
#include <functional>
template<typename T,typename R>
struct match_struct{
T t;
std::function<R(T)> f;
};
template<typename T,typename R>
match_struct<T,R> match(T t,std::function<R(T)>f) {
return match_struct<T,R>{t,f};
}
int main(int argc, char *argv[])
{
auto m = match<int,int>(10, [](int i){ return i;});
return 0;
}
我知道当我想创建一个struct / class时,我必须明确指定类型。我认为我可以创建一个模板化的函数来自动推断类型。
这样我就可以写
了auto m = match(10, [](int i){ return i;});
不幸的是,这不起作用。
有解决方法吗?那么我不必明确指定类型吗?