Ошибка префиксного оператора при переполнении стека

Я предполагаю, что это связано с приоритетом, но почему это законно

vector<string>::iterator iter = vec.begin();
iter++->empty();

Но это не так.

vector<string>::iterator iter = vec.begin();
++iter->empty();

Может кто-то попытается объяснить цепочку событий, которые здесь происходят.

3

Решение

Оператор стрелки имеет более высокий приоритет, чем приращение, поэтому ++iter->empty() анализируется как ++(iter->empty())не (++iter)->empty(), Пост-инкрементная версия работает, потому что есть только один способ разбора iter++->empty(),

7

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]