// PR c++/66427
// { dg-do compile { target c++14 } }
template<typename T>
struct complex {};
struct plus {};
struct multiplies {};
template<typename T, typename Op>
constexpr T identity_element;
template<>
constexpr int identity_element<int, plus> = 0;
template<typename T>
constexpr complex<T> identity_element<complex<T>, plus> = {
identity_element<T, plus>,
identity_element<T, plus>
};