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