1 // PR c++/66427 2 // { dg-do compile { target c++14 } } 3 4 template<typename T> 5 struct complex {}; 6 7 struct plus {}; 8 struct multiplies {}; 9 10 template<typename T, typename Op> 11 constexpr T identity_element; 12 13 template<> 14 constexpr int identity_element<int, plus> = 0; 15 16 template<typename T> 17 constexpr complex<T> identity_element<complex<T>, plus> = { 18 identity_element<T, plus>, 19 identity_element<T, plus> 20 }; 21