gpt4 book ai didi

c++ - 如何从模板类 typedef 方法的返回类型?

转载 作者:IT老高 更新时间:2023-10-28 21:59:28 24 4
gpt4 key购买 nike

我有一个模板类 Helper看起来像这样:

template< typename Mapper >
class Helper
{
public:

using mappedType = ... ;

};

我需要 mappedTypemap(const int&) 返回的类型Mapper 中的方法类(class)。给定 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 使用虚拟参数,那会更好(在我的具体代码中,参数不是那么简单)。

最佳答案

您可以使用 std::declvaldecltype 中使用成员函数而不创建实例:

using mappedType = decltype(std::declval<Mapper>().map(0));

std::declval 也可用于参数:

using mappedType = decltype(std::declval<Mapper>().map(std::declval<int>()));

关于c++ - 如何从模板类 typedef 方法的返回类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40655530/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com