Go forward to Demangler.
Go backward to unused parameter warnings.
Go up to User Problems.

g++ objects to a declaration in a case statement
================================================

   "The compiler objects to my declaring a variable in one of the
branches of a case statement.  Earlier versions used to accept this
code.  Why?"

   The draft standard does not allow a goto or a jump to a case label to
skip over an initialization of a variable or a class object.  For
example:

     switch ( i ) {
       case 1:
         Object obj(0);
             ...
         break;
       case 2:
     	...
         break;
     }

   The reason is that `obj' is also in scope in the rest of the switch
statement.

   As of version 2.7.0, the compiler will object that the jump to the
second case level crosses the initialization of `obj'.  Older compiler
versions would object only if class Object has a destructor.  In either
case, the solution is to add a set of curly braces around the case
branch:

       case 1:
         {
            Object obj(0);
             ...
            break;
         }