Is the following definition OK with regards to the use of the ternary assignment operator in the constructor?
#include <cmath>
using namespace std;
class Foo{
private:
complex z; // some complex number
double arg; // the principal argument of z
public:
Foo(complex y) :
z(y),
arg(y.real() == 0.0 and y.imag() == 0.0 ? 0.0 : atan2(y.imag(), y.real())
{}
};