如何在以下示例中获取成员函数的返回类型?
template <typename Getter>
class MyClass {
typedef decltype(mygetter.get()) gotten_t;
...
};
问题当然是我在定义MyClass时没有“mygetter”对象。
我要做的是:我正在创建一个缓存,可以使用getter返回的任何内容作为密钥。
答案 0 :(得分:11)
我不太确定你想要什么,但似乎mygetter
应该只是Getter
类型的任何对象。使用std::declval
来获取没有任何其他内容的对象(您只能将其用于类型推导)
typedef decltype(std::declval<Getter>().get()) gotten_t;