【发布时间】:2012-04-13 17:27:28
【问题描述】:
下例中如何获取成员函数的返回类型?
template <typename Getter>
class MyClass {
typedef decltype(mygetter.get()) gotten_t;
...
};
当然,问题是我在定义 MyClass 时没有“mygetter”对象。
我要做的是:我正在创建一个缓存,它可以使用 getter 返回的任何内容,因为它是关键。
【问题讨论】:
下例中如何获取成员函数的返回类型?
template <typename Getter>
class MyClass {
typedef decltype(mygetter.get()) gotten_t;
...
};
当然,问题是我在定义 MyClass 时没有“mygetter”对象。
我要做的是:我正在创建一个缓存,它可以使用 getter 返回的任何内容,因为它是关键。
【问题讨论】:
我不太确定你想要什么,但似乎mygetter 应该只是Getter 类型的任何对象。使用std::declval获取这样的对象,无需其他任何东西(只能用于类型推导)
typedef decltype(std::declval<Getter>().get()) gotten_t;
【讨论】:
Getter().get() 并假设Getter 是默认可构造的。