[LLVMbugs] [Bug 19994] New: No error for use of local const variable in local class with -std=c++03 -pedantic-errors

bugzilla-daemon at llvm.org bugzilla-daemon at llvm.org
Tue Jun 10 08:12:33 PDT 2014


            Bug ID: 19994
           Summary: No error for use of local const variable in local
                    class with -std=c++03 -pedantic-errors
           Product: clang
           Version: trunk
          Hardware: Other
                OS: Linux
            Status: NEW
          Severity: normal
          Priority: P
         Component: C++
          Assignee: unassignedclangbugs at nondot.org
          Reporter: hstong at ca.ibm.com
                CC: dgregor at apple.com, llvmbugs at cs.uiuc.edu
    Classification: Unclassified

Clang should probably produce a diagnostic for the source code below under
C++03 modes.

C++03 subclause 9.8 [class.local] paragraph 1:
Declarations in a local class can use only type names, static variables, extern
variables and functions, and enumerators from the enclosing scope.

C++03 subclause 3.2 [basic.def.odr] paragraph 2:
An object or non-overloaded function is used if its name appears in a
potentially-evaluated expression.

The expression in the return statement in X::f() is a potentially-evaluated

### SOURCE:> cat localVarUse.cc 
int foo() {
   const int n = 42;
   struct X {
      int f() { return n; }
   } x;
   return x.f();
Return:  0x00:0

### COMPILER INVOCATION AND OUTPUT:> clang++ localVarUse.cc -std=c++03
-pedantic-errors -Wall -Wextra -c
Return:  0x00:0

localVarUse.cc:4:24: error: reference to local variable 'n' declared in
enclosing function 'foo'
      int f() { return n; }
localVarUse.cc:2:14: note: 'n' declared here
   const int n = 42;
1 error generated.
Return:  0x01:1

### VERSION INFO:> clang++ -v
clang version 3.5.0 
Target: powerpc64-unknown-linux-gnu
Thread model: posix
Found candidate GCC installation: /usr/lib/gcc/ppc64-redhat-linux/4.4.4
Found candidate GCC installation: /usr/lib/gcc/ppc64-redhat-linux/4.4.6
Selected GCC installation: /usr/lib/gcc/ppc64-redhat-linux/4.4.6
Candidate multilib: .;@m64
Candidate multilib: 32;@m32
Selected multilib: .;@m64
Return:  0x00:0

You are receiving this mail because:
You are on the CC list for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-bugs/attachments/20140610/bdcf45a7/attachment.html>

More information about the llvm-bugs mailing list