/in/foo.cc: In function 'll solve_parity(int)':
/in/foo.cc:98:28: error: use of 'auto' in lambda parameter declaration only available with '-std=c++14' or '-std=gnu++14'
98 | auto update_tree = [&](auto &self, int node, int l, int r, int ul, int ur, int val) -> void
| ^~~~
/in/foo.cc: In lambda function:
/in/foo.cc:108:21: error: expression cannot be used as a function
108 | self(self, 2 * node, l, mid, ul, ur, val);
| ~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/in/foo.cc:110:21: error: expression cannot be used as a function
110 | self(self, 2 * node + 1, mid + 1, r, ul, ur, val);
| ~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/in/foo.cc: In function 'll solve_parity(int)':
/in/foo.cc:127:28: error: use of 'auto' in lambda parameter declaration only available with '-std=c++14' or '-std=gnu++14'
127 | auto query_range = [&](auto &self, int node, int l, int r, ll ql, ll qr) -> ll
| ^~~~
/in/foo.cc: In lambda function:
/in/foo.cc:142:20: error: expression cannot be used as a function
142 | return self(self, 2 * node, l, mid, ql, qr) + self(self, 2 * node + 1, mid + 1, r, ql, qr);
| ~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/in/foo.cc:142:59: error: expression cannot be used as a function
142 | return self(self, 2 * node, l, mid, ql, qr) + self(self, 2 * node + 1, mid + 1, r, ql, qr);
| ~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/in/foo.cc: In function 'll solve_parity(int)':
/in/foo.cc:157:24: error: no match for call to '(solve_parity(int)::<lambda(int&, int, int, int, int, int, int)>) (solve_parity(int)::<lambda(int&, int, int, int, int, int, int)>&, int, int, int, int&, int&, int&)'
157 | update_tree(update_tree, 1, 0, sz - 1, ul, ur, it_event->type);
| ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/in/foo.cc:98:24: note: candidate: 'solve_parity(int)::<lambda(int&, int, int, int, int, int, int)>'
98 | auto update_tree = [&](auto &self, int node, int l, int r, int ul, int ur, int val) -> void
| ^
/in/foo.cc:98:24: note: no known conversion for argument 1 from 'solve_parity(int)::<lambda(int&, int, int, int, int, int, int)>' to 'int&'
/in/foo.cc: In lambda function:
/in/foo.cc:168:35: error: no match for call to '(solve_parity(int)::<lambda(int&, int, int, int, ll, ll)>) (solve_parity(int)::<lambda(int&, int, int, int, ll, ll)>&, int, int, int, ll&, ll&)'
168 | return query_range(query_range, 1, 0, sz - 1, ql, qr);
| ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/in/foo.cc:127:24: note: candidate: 'solve_parity(int)::<lambda(int&, int, int, int, ll, ll)>'
127 | auto query_range = [&](auto &self, int node, int l, int r, ll ql, ll qr) -> ll
| ^
/in/foo.cc:127:24: note: no known conversion for argument 1 from 'solve_parity(int)::<lambda(int&, int, int, int, ll, ll)>' to 'int&'