virtual void operator()( EOT & x ) { if( x.invalid() ) { return; } double sum = 0; int sign = 1; for( unsigned int i=0, s=x.size(); i<s; ++i ) { sum += x[i] * x[i]; sign *= x[i]<0 ? -1 : 1; } x.fitness( std::make_pair( sum, sign>0 ? true : false ) ); }