Main.cc: In function ‘i64 queried(i64)’: Main.cc:13:16: warning: decomposition declaration only available with -std=c++1z or -std=gnu++1z for (auto& [op, x, s, t] : query) { ^ Main.cc: In function ‘int main()’: Main.cc:40:16: warning: decomposition declaration only available with -std=c++1z or -std=gnu++1z for (auto& [op, x, s, t] : query) ^ Main.cc:44:55: error: use of ‘auto’ in lambda parameter declaration only available with -std=c++14 or -std=gnu++14 cout << upper_bound(arr.begin(), arr.end(), r, [](auto x, auto y) { return x < queried(y); }) - lower_bound(arr.begin(), arr.end(), l, [](auto x, auto y) { return queried(x) < y; }) << '\n'; ^~~~ Main.cc:44:63: error: use of ‘auto’ in lambda parameter declaration only available with -std=c++14 or -std=gnu++14 cout << upper_bound(arr.begin(), arr.end(), r, [](auto x, auto y) { return x < queried(y); }) - lower_bound(arr.begin(), arr.end(), l, [](auto x, auto y) { return queried(x) < y; }) << '\n'; ^~~~ Main.cc:44:143: error: use of ‘auto’ in lambda parameter declaration only available with -std=c++14 or -std=gnu++14 cout << upper_bound(arr.begin(), arr.end(), r, [](auto x, auto y) { return x < queried(y); }) - lower_bound(arr.begin(), arr.end(), l, [](auto x, auto y) { return queried(x) < y; }) << '\n'; ^~~~ Main.cc:44:151: error: use of ‘auto’ in lambda parameter declaration only available with -std=c++14 or -std=gnu++14 cout << upper_bound(arr.begin(), arr.end(), r, [](auto x, auto y) { return x < queried(y); }) - lower_bound(arr.begin(), arr.end(), l, [](auto x, auto y) { return queried(x) < y; }) << '\n'; ^~~~