Main.cc: In function ‘int main()’: Main.cc:43:16: warning: decomposition declaration only available with -std=c++1z or -std=gnu++1z for (auto& [op, x, s, t] : query) ^ Main.cc:47: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:47: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:47: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:47: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'; ^~~~