В комментариях все более менее пришли к консенсусу, однако давайте разложим все по полочкам, чтобы вопросов уже точно не осталось.
#include <iostream>
int main () {
std::cout << +-!!"" << std::endl;
return 0;
}
Начнем с того, что этот код компилируется. Это уже много дает. По крайней мере вы смотрите на валидный С++ код.
Плюс-минусы и два восклицательных знака - валидные операции над валидными тривиальными типами. Поэтому, по факту, единственное, что надо доказать - что !"" - валидное выражение.
Разберемся с кавычками. Это строковый литерал, обозначающий пустую строку. И он имеет тип const char[1]. Единичка берется из-за того, что сишные строки неявно содержат символ '\0' в конце. Так собственно и определяется конец строки.
Для массивов не определен оператор логического отрицания. Печаль...
Но зато он определен для указателей! А у массивов есть одно замечательное свойство - косить под указатель на свой первый элемент. Поэтому для выполнения !"", компилятор приведет "" к const char *, который будет указывать на какой-то конкретный участок памяти, где лежит эта пустая строка. Раз участок конкретный - тогда этот указатель считается типа true. Отрицаем true - получаем false.
Дальше остается всего-то +-!false. Отрицает false - получаем true. Также у нас есть встроеные унарные операторы для арифметических типов. А bool - тоже арифметический тип. Поэтому true - это как бы 1. +-1 в итоге дает -1(+знака числа не меняет).
Таким нехитрым образом, получаем ответ: -1.
Ставьте снеговика☃️, если ваша интуиция(или знания) вас не подвели.
Stay on positive side. Stay cool.