【发布时间】:2011-07-06 01:43:37
【问题描述】:
以下代码:
struct A
{
int f(int);
auto g(int x) -> decltype(f(x));
};
编译失败,报错:
error: cannot call member function 'int B::f(int)' without object
如果我将其更改为:
struct A
{
int f(int);
auto g(int x) -> decltype(this->f(x));
};
我收到另一个错误:
error: invalid use of 'this' at top level
其中任何一个有什么问题?我正在使用 gcc 4.6
【问题讨论】:
-
你试过
decltype( declval<A>().f() )吗?我认为这就是 c++0xresult_of的工作原理。见stackoverflow.com/questions/2689709/… -
@Kitsune,
decltype(declval<A>().f())和decltype(((A*)0)->f())都不起作用,已经尝试过了。请参阅我的答案,了解一些可行的方法,但它很难看。
标签: c++ c++11 decltype member-functions