http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58910
Bug ID: 58910 Summary: std::Tuple_impl is non constexpr when using identical userdefined structs as type Product: gcc Version: 4.9.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: Gaetano.Checinski at googlemail dot com Following code does not compile with gcc-snapshot(2013-10-21) : #include <tuple> using namespace std; struct t1{ constexpr t1(){} }; struct t2{ constexpr t2(){} }; int main() { constexpr t1 T1; constexpr t2 T2; constexpr tuple<t1,t2> Tup1(T1,T2); constexpr tuple<t1,t1> Tup2(T1,T1); constexpr auto a=get<0>(Tup1 ); //works fine constexpr auto b=get<0>(Tup2 ); // error: //'(const std::_Head_base<0ul, t1, true>*)(& Tup2)' //is not a constant expression constexpr auto b=get<0>(Tup2 ); return 0; }