// 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> | |
}; |