http://gcc.gnu.org/bugzilla/show_bug.cgi?id=14258
Elias Pipping <pipping at exherbo dot org> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |pipping at exherbo dot org
--- Comment #18 from Elias Pipping <pipping at exherbo dot org> ---
I'm a bit confused here. Please consider the following piece of code:
<<SNIP
template <typename T> struct A {
typedef int type;
};
template <typename T> struct B : public A<T> {
using typename A<T>::type;
static const int block_size = type::block_size;
};
<<SNAP
Compiling it with gcc 4.8.2 yields
foo.hh:9:33: error: ‘type’ is not a class, namespace, or enumeration
whereas clang 3.4 will happily accept it(*).
At a first glance, this bug appears to address issues such as this, so that gcc
4.8.2 should be fine. This does not seem to be the case, however -- the test
case provided by Jim Apple compiles but the one above does not; I'll have to
assume the bug was only partly fixed?
(*) I orginally thought this was not valid and filed a clang bug:
http://llvm.org/bugs/show_bug.cgi?id=18574