https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66287

            Bug ID: 66287
           Summary: [C++11] A constexpr variable of "const int* const&"
                    cannot be initialized
           Product: gcc
           Version: 6.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: kariya_mitsuru at hotmail dot com
  Target Milestone: ---

Created attachment 35627
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=35627&action=edit
g++ -v

Please see the sample code below.

=========== sample code ===========
constexpr const int& i = 42;
constexpr const int* const& p = &i;

int main() {}
=========== sample code ===========
================================== output ==================================
prog.cc:2:34: error: modification of '_ZGR1p1' is not a constant-expression
 constexpr const int* const& p = &i;
                                  ^
================================== output ==================================
cf. http://melpon.org/wandbox/permlink/RfoewySFecAtfEOV

I think that "&i" is a valid constant expression.


Note that it is compiled successfully if the variable "i" is not a reference.

=========== sample code ===========
constexpr const int i = 42;
constexpr const int* const& p = &i;

int main() {}
=========== sample code ===========
cf. http://melpon.org/wandbox/permlink/qdLd3nqzteNRrnow


Note also that an rvalue reference causes the same error.

=========== sample code ===========
constexpr int&& i = 42;
constexpr int*&& p = &i;

int main() {}
=========== sample code ===========
================================== output ==================================
prog.cc:2:23: error: modification of '_ZGR1p1' is not a constant-expression
 constexpr int*&& p = &i;
                       ^
================================== output ==================================
cf. http://melpon.org/wandbox/permlink/TzS1T2dzyjSMxlKd

Reply via email to