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

            Bug ID: 113782
           Summary: constexpr on std::initializer_list, std::pair and
                    std::tuple is non-conforming for C++11
           Product: gcc
           Version: 14.0
            Status: UNCONFIRMED
          Keywords: accepts-invalid
          Severity: normal
          Priority: P3
         Component: libstdc++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: redi at gcc dot gnu.org
  Target Milestone: ---

https://wg21.link/N3471 should be a C++14 change, not present in C++11 mode.

i.e. this should be rejected with -std=c++11

#include <utility>
#include <tuple>
#include <initializer_list>

constexpr std::initializer_list<int> il{1,2,3};
constexpr int i = std::move(*il.begin()) + end(il)[-1] + (int)il.size();
constexpr std::pair<int, int> p{1, 2};
constexpr int j = std::get<0>(p) + (int)(p == p);
constexpr std::tuple<int> t{1};



initializer_list changes:
r0-104226-g900484dee595d9 (this adds FE tests using -std=c++0x)

<utility> function changes:
r0-110341-g9b9e81a0a9cef8 (also touched std::pair)

std::tuple and std::pair changes:
r0-104899-g094a14eff78e4f

Reply via email to