[LLVMbugs] [Bug 19346] New: adding zero to null pointer rejected in constant expressions
    bugzilla-daemon at llvm.org 
    bugzilla-daemon at llvm.org
       
    Fri Apr  4 11:21:36 PDT 2014
    
    
  
http://llvm.org/bugs/show_bug.cgi?id=19346
            Bug ID: 19346
           Summary: adding zero to null pointer rejected in constant
                    expressions
           Product: clang
           Version: trunk
          Hardware: PC
                OS: Linux
            Status: NEW
          Severity: normal
          Priority: P
         Component: C++11
          Assignee: unassignedclangbugs at nondot.org
          Reporter: zilla at kayari.org
                CC: dgregor at apple.com, llvmbugs at cs.uiuc.edu
    Classification: Unclassified
constexpr int* p = nullptr;
constexpr int n = 0;
constexpr int* p2 = p + n;
a.cc:3:16: error: constexpr variable 'p2' must be initialized by a constant
expression
constexpr int* p2 = p + n;
               ^    ~~~~~
a.cc:3:23: note: cannot perform pointer arithmetic on null pointer
constexpr int* p2 = p + n;
                      ^
Th last paragraph of [expr.add] says "If the value 0 is added to or subtracted
from a pointer value, the result compares equal to the original pointer value."
 I believe that should also apply for a null pointer.
Rejecting this makes it more awkward to define end() in the code below:
struct initializer_list {
  constexpr initializer_list() : b(nullptr), sz(0) { }
  constexpr int* begin() const { return b; }
  constexpr int* end() const { return b+sz; }
  int* b;
  unsigned sz;
};
constexpr initializer_list il;
constexpr int* p = il.end();
-- 
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/20140404/217f4d95/attachment.html>
    
    
More information about the llvm-bugs
mailing list