secret.cpp:50:28: error: no matching function for call to 'disjoint_sparse_table<int>::disjoint_sparse_table()'
50 | disjoint_sparse_table<int> DST;
| ^~~
secret.cpp:10:3: note: candidate: 'disjoint_sparse_table<T>::disjoint_sparse_table(std::vector<_Tp>&, std::function<T(T, T)>) [with T = int]'
10 | disjoint_sparse_table(vector<T> &A, function<T(T, T)> f): A(A), f(f){
| ^~~~~~~~~~~~~~~~~~~~~
secret.cpp:10:3: note: candidate expects 2 arguments, 0 provided
secret.cpp:5:8: note: candidate: 'disjoint_sparse_table<int>::disjoint_sparse_table(const disjoint_sparse_table<int>&)'
5 | struct disjoint_sparse_table{
| ^~~~~~~~~~~~~~~~~~~~~
secret.cpp:5:8: note: candidate expects 1 argument, 0 provided
secret.cpp:5:8: note: candidate: 'disjoint_sparse_table<int>::disjoint_sparse_table(disjoint_sparse_table<int>&&)'
secret.cpp:5:8: note: candidate expects 1 argument, 0 provided
secret.cpp: In instantiation of 'disjoint_sparse_table<T>::disjoint_sparse_table(std::vector<_Tp>&, std::function<T(T, T)>) [with T = int]':
secret.cpp:56:41: required from here
secret.cpp:8:13: warning: 'disjoint_sparse_table<int>::A' will be initialized after [-Wreorder]
8 | vector<T> A;
| ^
secret.cpp:6:21: warning: 'std::function<int(int, int)> disjoint_sparse_table<int>::f' [-Wreorder]
6 | function<T(T, T)> f;
| ^
secret.cpp:10:3: warning: when initialized here [-Wreorder]
10 | disjoint_sparse_table(vector<T> &A, function<T(T, T)> f): A(A), f(f){
| ^~~~~~~~~~~~~~~~~~~~~