Hello all,

I have tested the following code on  g++ 4.3, 4.2, 4.1 and 3.4.

#include <iostream>

struct B {
  static const int x = 1;
};

struct A {
  static const int x = 0;
  template <typename A>
  static void f() {
    std::cerr << A::x << std::endl;
  }
};

int main() {
  A::f<B>();
  return 0;
}

The program just write zero to the standard error, which means that the 
template parameter does not hide the class name. I have tested other 
compilers, and they write one to the standard error. I do not know surely, 
but I mean this a bug in gcc or a very strange behaviour of c++ standard.

Best, Balazs

Reply via email to