テンプレートに依存する型名のusing宣言
少し前に、テンプレートに依存する型名のusing宣言の書き方が分からなくて、色々試していた。
template <class T> struct bar { typedef T type; }; template <class T> class foo:bar<T> { using typename bar<T>::type; // (1) やりたかったこと typedef typename bar<T>::type type; // (2) 実際に書いたコード void hage(type); // (3) (1)だとこれが通らない。 };
(1)だと(3)が通らないのは、書き方が間違っているのではなく、単にコンパイラのバグなのね。
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=14258