C ++ 0x decltype y el operador de resolución de alcance

Con una clase como Foo:

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

Me parece que GCC 4.5 rechazará lo siguiente

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

Funcionará si uso un typedef intermedio, como:

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

pero prefiero mantener limpio el espacio de nombres. Pensé que la precedencia podría ser un problema, así que también probé los paréntesis, pero no tuve suerte. ¿Es imposible como se presenta, o hay una sintaxis que pueda ayudarme?

Respuestas a la pregunta(1)

Su respuesta a la pregunta