Fooなどのクラスの場合:
struct Foo { static const int i = 9; };
GCC4.5は以下を拒否することがわかりました
Foo f;
int x = decltype(f)::i;
次のような中間のtypedefを使用すると機能します。
typedef decltype(f) ftype;
int x = ftype::i;
しかし、私は名前空間をきれいに保つことを好みます。優先順位が問題になるかもしれないと思ったので、かっこも試してみましたが、運が悪かったです。提示されているようにそれは不可能ですか、それとも私を助けることができる構文の一部がありますか?