【发布时间】:2017-04-01 00:46:51
【问题描述】:
我有一个模板类 Helper,如下所示:
template< typename Mapper >
class Helper
{
public:
using mappedType = ... ;
};
我需要mappedType 是Mapper 类中map(const int&) 方法返回的类型。给定Mapper 的有效类型,如下所示:
class DMapper
{
public:
double map(const int& val){ ... }
};
Helper<DMapper>::mappedType 应该是 double。有没有办法在不实例化Mapper 的情况下做到这一点?
我得到的最接近的是:
using mappedType = typename std::result_of<
decltype(&Mapper::map)(Mapper const*, const int&)
>::type;
但是type在这种情况下没有定义。
编辑:
如果我可以避免对int 使用虚拟参数,那就更好了(在我的具体代码中,参数不是那么简单)。
【问题讨论】:
-
你真的需要
Dmapper中的名字吗?既然你有 C++14,你可以像auto function(stuff) { return whatever; }一样使用auto -
是的,我知道还有其他方法可以实现我的目标(我需要以
Helper的方法返回std::vector的mappedType),这更多是出于好奇:)
标签: c++ types c++14 return-type-deduction