C ++ 0x decltype и оператор разрешения области видимости

С таким классом, как Foo:

struct Foo { static const int i = 9; };

Я обнаружил, что GCC 4.5 отклонит следующее

Foo f;
int x = decltype(f)::i;

Это будет работать, если я использую промежуточный typedef, например как:

typedef decltype(f) ftype;
int x = ftype::i;

, но я предпочитаю сохранять пространство имен в чистоте. Я думал, что приоритет может быть проблемой, поэтому я тоже пробовал скобки, но не повезло. Разве это невозможно, как представлено, или есть какой-то синтаксис, который может мне помочь?

14
задан Johannes Schaub - litb 2 October 2011 в 10:26
поделиться