成员函数的decltype

Mar*_*tin 6 c++ decltype c++11

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

template <typename Getter>
class MyClass {
   typedef decltype(mygetter.get()) gotten_t;
 ...
};
Run Code Online (Sandbox Code Playgroud)

当然,问题在于我在定义MyClass时没有"mygetter"对象.

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

lef*_*out 11

我不太确定你想要什么,但似乎mygetter应该只是任何类型的对象Getter.使用std::declval得到这样的对象,而无需其他任何(你只能使用它的类型扣)

typedef decltype(std::declval<Getter>().get()) gotten_t;
Run Code Online (Sandbox Code Playgroud)