Whatever the default constructor does - if the class has no member variables then nothing.
std::max (along with most other algorithms) is template based. See
https://en.cppreference.com/w/cpp/algorithm/max for examples of possible std::max implementations. In particular second version which takes a class as the third param.
Code:
template<class T, class Compare>
const T& max(const T& a, const T& b, Compare comp)
{
return (comp(a, b)) ? b : a;
}
In your example case, T is of type Complex and Compare is of type ComplexComparer.