【发布时间】:2015-03-10 22:55:58
【问题描述】:
是否可以在编译时获取模板成员函数的返回类型?
我想我需要一些类似的东西:
template<class T>
struct SomeClass
{
// T must have a function foo(int), but do not know the
// return type, it could be anything
using RType = ??? T::foo(int) ???; // Is it possible to deduce it here?
}
【问题讨论】:
-
decltype不起作用吗?我不确定您的问题到底是什么。另外,foo是static成员函数吗?如果没有,您可能需要使用decltype(std::declval<T>().foo(1))。还是您想要foo本身的类型(例如int(int))? -
所以,foo 不是静态成员函数,我只想要 foo 的返回类型。例如,如果 foo 返回 int,我想要 int,如果 foo 返回 bool,我想要那个。现在,我不知道如何使它与 decltype 一起使用,这是正确的使用方法,因为我在编译时需要它吗?我会试试你的建议,看看是否可行,谢谢。
标签: templates c++11 member-functions