Следующий код:
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() )
? Я думаю, что так работает С++ 0xresult_of
. См. stackoverflow.com/questions /2689709/ - person KitsuneYMG   schedule 01.03.2011decltype(declval<A>().f())
, ниdecltype(((A*)0)->f())
не сработают, пробовали. Смотрите мой ответ для чего-то, что работает, но это уродливо. - person Mikael Persson   schedule 01.03.2011