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())
        {}
};
