2012-04-13 104 views
6

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

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

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

我想要做的是:我创建一个缓存,可以使用,因为它的关键,无论是由getter返回。

回答

11

我不太清楚你想要什么,但它似乎mygetter应该只是Getter类型的任何对象。使用std::declval获得无任何其他这样的对象(你只能使用它的类型推演)

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

嘿,我从来不知道这一点。棒极了!我总是使用'Getter()。get()'并假定'Getter'是默认可构造的。 – 2012-04-13 17:32:35