http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55573
--- Comment #7 from vincenzo Innocente <vincenzo.innocente at cern dot ch> 2012-12-03 13:54:14 UTC --- Thanks for the quick fix could you please verify why this other constructor constexpr Rot3( T xx, T xy, T xz, T yx, T yy, T yz, T zx, T zy, T zz) : axis{ (Vec){xx,xy,xz,0}, (Vec){yx,yy,yz,0}, (Vec){zx,zy,zz,0} }{} constexpr Rot3<float> r1( 0, 1 ,0, 0, 0, 1, 1, 0, 0); produces c++ -std=c++11 -Ofast -c ceVec.cc ceVec.cc:34:53: error: ‘const Rot3<float>{Rot3<float>::Vec [3]{Rot3<float>::Vec{0.0f, 1.0e+0f, 0.0f, 0.0f}, Rot3<float>::Vec{0.0f, 0.0f, 1.0e+0f, 0.0f}, Rot3<float>::Vec{1.0e+0f, 0.0f, 0.0f, 0.0f}}}’ is not a constant expression constexpr Rot3<float> r1( 0, 1 ,0, 0, 0, 1, 1, 0, 0);