An odd integer leaves a nonzero remainder when divided by two. In C++, testing i % 2 identifies odd values and distinguishes them from even values. section 9.1.4
Marking odd and even triangle numbers
A transformation turns odd triangle numbers into dots and even ones into asterisks: . . * * . . * *. The lambda returns '.' when i % 2 is nonzero and '*' otherwise. section 9.1.4
