我试图推断出可调用模板参数的类型,遗憾的是没有成功:
String dateString = "26-10-2016";
convertDateFormat(dateString);
private Date convertDateFormat(String data) {
try {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("dd-MM-yyyy");
Date date = simpleDateFormat.parse(data);
Log.d(TAG," test==>"+date);
return date;
} catch (ParseException e) {
e.printStackTrace();
}
return null;
}
上面的代码会导致以下错误:
template<typename callable, typename T_out >
class A
{};
template<typename callable>
auto make_A( callable f )
{
return A<callable, typename std::result_of_t<callable> >{ f };
}
int main()
{
make_A( []( float f ){ return f;} );
}
有谁知道如何修复它?
非常感谢提前。
答案 0 :(得分:2)
您需要将参数列表传递给std::result_of
,否则无法告知返回类型(毕竟operator()
可能会超载)。
return A<callable, std::result_of_t<callable(float)> >{ f }
(提供A<callable, std::result_of_t<callable(float)>
可以使用f
构建,但不是这个例子的情况。