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