Проще говоря, эти два for
циклы функционируют одинаково:
for (int i = 0; i < (p_size < size ? p_size : size); i++);
for (int i = 0; i < {p_size < size ? p_size : size}; i++);
?
Цикл находится внутри метода (функции-члена), p_size
это его параметр и size
является атрибутом (переменная-член). Microsoft Visual Studio 2015 компилирует оба кода, но p_size
не окрашен как другие параметры (в редакторе) в коде с помощью фигурных скобок.
Это действительный код:
for (int i = 0; i < (p_size < size ? p_size : size); i++);
Это неверный код:
for (int i = 0; i < {p_size < size ? p_size : size}; i++);
Наличие фигурных скобок в середине выражения недопустимо.
Я бы тоже вообще рекомендовал std::min
:
for (int i = 0; i < std::min(p_size, size); i++);
Других решений пока нет …