Тернарный оператор может быть применен, если выражения имеют одинаковый результирующий тип.
Я не вижу какого типа у вас z, но предположу, что не const char*
В случае, если это const char*, то условие как минимум странное.
Для данного примера тернарный оператор применен быть не может.
Для такого примера его применить можно:
cout << (z < 0 ? "Error" : "Ok") << endl;
Не забывайте, что оператор << имеет больший приоритет, чем оператор меньше
Update:
Коллега в предидущем ответе предложил достаточно оригинальный способ
((z<0)?(std::cout << "Error"):(std::cout << z)) << std::endl;
Работать это будет, т.к. у обоих выражений будет одинаковый результирующий тип - std::ostream