It's commom for a template classe to derive from one of its parameters. For instance,ctemplate <typename Base>struct Foo : public Base { Foo() { Base::f(); }};There is an issue when this template is instantiated for a class that has a base with the same name as the template parameter, i.e., Base. In this case, inside Foo's scope the base class hides the template parameter and apparently there's no way to refer to the class used in the instantiation.The code in the section "Steps to reproduce" show an example. VS 2010, VS2012 and VS CTP Nov 2012 output "Bad" whereas GCC 4.6.3, GCC 4.7.2, GCC 4.8.0, Clang 3.2 and Intel 13.0.1 ouptut "Good". This is a simple example where the code compiles but produces a wrong output. In other variations of this issue the code might fail to compile in Visual Studio.
Visual Studio/Team Foundation Server/.NET Framework Tooling Version
Steps to reproduce
Product Language
Operating System
Operating System Language
Actual results
Expected results