С таким классом, как 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;
, но я предпочитаю сохранять пространство имен в чистоте. Я думал, что приоритет может быть проблемой, поэтому я тоже пробовал скобки, но не повезло. Разве это невозможно, как представлено, или есть какой-то синтаксис, который может мне помочь?