成员函数的decltype

时间:2012-04-13 17:27:29

标签: c++ c++11 decltype

如何在以下示例中获取成员函数的返回类型?

template <typename Getter>
class MyClass {
   typedef decltype(mygetter.get()) gotten_t;
 ...
};

问题当然是我在定义MyClass时没有“mygetter”对象。

我要做的是:我正在创建一个缓存,可以使用getter返回的任何内容作为密钥。

1 个答案:

答案 0 :(得分:11)

我不太确定你想要什么,但似乎mygetter应该只是Getter类型的任何对象。使用std::declval来获取没有任何其他内容的对象(您只能将其用于类型推导)

typedef decltype(std::declval<Getter>().get()) gotten_t;