bank.cpp: In lambda function:
bank.cpp:29:9: error: use of 'brute' before deduction of 'auto'
29 | if (brute(new_state)) {
| ^~~~~
bank.cpp:39:11: error: use of 'brute' before deduction of 'auto'
39 | if (brute(new_state)) { return table[state] = true; }
| ^~~~~
bank.cpp: In function 'int main()':
bank.cpp:51:19: error: no match for call to '(main()::<lambda(auto:16&&, const std::array<int, 21>&)>) (std::array<int, 21>&)'
51 | bool ans = brute(state);
| ~~~~~^~~~~~~
bank.cpp:19:16: note: candidate: 'template<class auto:16> main()::<lambda(auto:16&&, const std::array<int, 21>&)>'
19 | auto brute = [&](auto&& self, const std::array<int, 21>& state) -> bool {
| ^
bank.cpp:19:16: note: template argument deduction/substitution failed:
bank.cpp:51:19: note: candidate expects 2 arguments, 1 provided
51 | bool ans = brute(state);
| ~~~~~^~~~~~~