0

I am currently in the progress of doing a competitive programming problem, but I am encountering this error at compilation.

I tried to make a function int search(int C1, int C2, int C3, int C4, string op_string) to do a complete search.

#include <bits/stdc++.h>
using namespace std;

// Operations Search
int search(int C1, int C2, int C3, int C4, string op_string) {
    if (op_string.length() == 3) {
        return 0;
    }
    search(C1, C2, C3, C4, op_string + '+');
    search(C1, C2, C3, C4, op_string + '-');
    search(C1, C2, C3, C4, op_string + '*');
    search(C1, C2, C3, C4, op_string + '/');
}

// Main Function
int main() {
    // Test Cases
    int N;
    cin >> N;
    while (N--) {
        int C1, C2, C3, C4;
        cin >> C1 >> C2 >> C3 >> C4;
        cout << min({search(C1, C2, C3, C4, "+"),
                     search(C1, C2, C3, C4, "-"),
                     search(C1, C2, C3, C4, "*"),
                     search(C1, C2, C3, C4, "/")}) << endl;
    }
}

Compiler Output:

====================[ Build | C___Testing_Environment | Debug ]=================
C:\Users\maxli\AppData\Local\JetBrains\Toolbox\apps\CLion\ch-0\232.8660.186\bin\cmake\win\x64\bin\cmake.exe --build C:\Users\maxli\CLionProjects\C++_Testing_Environment\cmake-build-debug --target C___Testing_Environment -j 10
[1/2] Building CXX object CMakeFiles/C___Testing_Environment.dir/main.cpp.obj
FAILED: CMakeFiles/C___Testing_Environment.dir/main.cpp.obj 
C:\Users\maxli\AppData\Local\JetBrains\Toolbox\apps\CLion\ch-0\232.8660.186\bin\mingw\bin\g++.exe   -g -fdiagnostics-color=always -MD -MT CMakeFiles/C___Testing_Environment.dir/main.cpp.obj -MF CMakeFiles\C___Testing_Environment.dir\main.cpp.obj.d -o CMakeFiles/C___Testing_Environment.dir/main.cpp.obj -c C:/Users/maxli/CLionProjects/C++_Testing_Environment/main.cpp
In file included from C:/Users/maxli/AppData/Local/JetBrains/Toolbox/apps/CLion/ch-0/232.8660.186/bin/mingw/lib/gcc/x86_64-w64-mingw32/13.1.0/include/c++/algorithm:60,
                 from C:/Users/maxli/AppData/Local/JetBrains/Toolbox/apps/CLion/ch-0/232.8660.186/bin/mingw/lib/gcc/x86_64-w64-mingw32/13.1.0/include/c++/x86_64-w64-mingw32/bits/stdc++.h:51,
                 from C:/Users/maxli/CLionProjects/C++_Testing_Environment/main.cpp:2:
C:/Users/maxli/AppData/Local/JetBrains/Toolbox/apps/CLion/ch-0/232.8660.186/bin/mingw/lib/gcc/x86_64-w64-mingw32/13.1.0/include/c++/bits/stl_algobase.h: In instantiation of '_Iterator std::__find_if(_Iterator, _Iterator, _Predicate) [with _Iterator = int; _Predicate = __gnu_cxx::__ops::_Iter_comp_to_iter<const char*, int>]':
C:/Users/maxli/AppData/Local/JetBrains/Toolbox/apps/CLion/ch-0/232.8660.186/bin/mingw/lib/gcc/x86_64-w64-mingw32/13.1.0/include/c++/bits/stl_algo.h:159:23:   required from '_ForwardIterator1 std::__search(_ForwardIterator1, _ForwardIterator1, _ForwardIterator2, _ForwardIterator2, _BinaryPredicate) [with _ForwardIterator1 = int; _ForwardIterator2 = int; _BinaryPredicate = __gnu_cxx::__ops::_Iter_comp_iter<const char*>]'
C:/Users/maxli/AppData/Local/JetBrains/Toolbox/apps/CLion/ch-0/232.8660.186/bin/mingw/lib/gcc/x86_64-w64-mingw32/13.1.0/include/c++/bits/stl_algo.h:4191:27:   required from '_FIter1 std::search(_FIter1, _FIter1, _FIter2, _FIter2, _BinaryPredicate) [with _FIter1 = int; _FIter2 = int; _BinaryPredicate = const char*]'
C:/Users/maxli/CLionProjects/C++_Testing_Environment/main.cpp:24:28:   required from here
C:/Users/maxli/AppData/Local/JetBrains/Toolbox/apps/CLion/ch-0/232.8660.186/bin/mingw/lib/gcc/x86_64-w64-mingw32/13.1.0/include/c++/bits/stl_algobase.h:2118:48: error: no matching function for call to '__iterator_category(int&)'
 2118 |                        std::__iterator_category(__first));
      |                        ~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~
In file included from C:/Users/maxli/AppData/Local/JetBrains/Toolbox/apps/CLion/ch-0/232.8660.186/bin/mingw/lib/gcc/x86_64-w64-mingw32/13.1.0/include/c++/bits/stl_algobase.h:65:
C:/Users/maxli/AppData/Local/JetBrains/Toolbox/apps/CLion/ch-0/232.8660.186/bin/mingw/lib/gcc/x86_64-w64-mingw32/13.1.0/include/c++/bits/stl_iterator_base_types.h:239:5: note: candidate: 'template<class _Iter> constexpr typename std::iterator_traits< <template-parameter-1-1> >::iterator_category std::__iterator_category(const _Iter&)'
  239 |     __iterator_category(const _Iter&)
      |     ^~~~~~~~~~~~~~~~~~~
C:/Users/maxli/AppData/Local/JetBrains/Toolbox/apps/CLion/ch-0/232.8660.186/bin/mingw/lib/gcc/x86_64-w64-mingw32/13.1.0/include/c++/bits/stl_iterator_base_types.h:239:5: note:   template argument deduction/substitution failed:
C:/Users/maxli/AppData/Local/JetBrains/Toolbox/apps/CLion/ch-0/232.8660.186/bin/mingw/lib/gcc/x86_64-w64-mingw32/13.1.0/include/c++/bits/stl_iterator_base_types.h: In substitution of 'template<class _Iter> constexpr typename std::iterator_traits< <template-parameter-1-1> >::iterator_category std::__iterator_category(const _Iter&) [with _Iter = int]':
C:/Users/maxli/AppData/Local/JetBrains/Toolbox/apps/CLion/ch-0/232.8660.186/bin/mingw/lib/gcc/x86_64-w64-mingw32/13.1.0/include/c++/bits/stl_algobase.h:2118:34:   required from '_Iterator std::__find_if(_Iterator, _Iterator, _Predicate) [with _Iterator = int; _Predicate = __gnu_cxx::__ops::_Iter_comp_to_iter<const char*, int>]'
C:/Users/maxli/AppData/Local/JetBrains/Toolbox/apps/CLion/ch-0/232.8660.186/bin/mingw/lib/gcc/x86_64-w64-mingw32/13.1.0/include/c++/bits/stl_algo.h:159:23:   required from '_ForwardIterator1 std::__search(_ForwardIterator1, _ForwardIterator1, _ForwardIterator2, _ForwardIterator2, _BinaryPredicate) [with _ForwardIterator1 = int; _ForwardIterator2 = int; _BinaryPredicate = __gnu_cxx::__ops::_Iter_comp_iter<const char*>]'
C:/Users/maxli/AppData/Local/JetBrains/Toolbox/apps/CLion/ch-0/232.8660.186/bin/mingw/lib/gcc/x86_64-w64-mingw32/13.1.0/include/c++/bits/stl_algo.h:4191:27:   required from '_FIter1 std::search(_FIter1, _FIter1, _FIter2, _FIter2, _BinaryPredicate) [with _FIter1 = int; _FIter2 = int; _BinaryPredicate = const char*]'
C:/Users/maxli/CLionProjects/C++_Testing_Environment/main.cpp:24:28:   required from here
C:/Users/maxli/AppData/Local/JetBrains/Toolbox/apps/CLion/ch-0/232.8660.186/bin/mingw/lib/gcc/x86_64-w64-mingw32/13.1.0/include/c++/bits/stl_iterator_base_types.h:239:5: error: no type named 'iterator_category' in 'struct std::iterator_traits<int>'
In file included from C:/Users/maxli/AppData/Local/JetBrains/Toolbox/apps/CLion/ch-0/232.8660.186/bin/mingw/lib/gcc/x86_64-w64-mingw32/13.1.0/include/c++/bits/stl_algobase.h:71:
C:/Users/maxli/AppData/Local/JetBrains/Toolbox/apps/CLion/ch-0/232.8660.186/bin/mingw/lib/gcc/x86_64-w64-mingw32/13.1.0/include/c++/bits/predefined_ops.h: In instantiation of 'constexpr bool __gnu_cxx::__ops::_Iter_comp_iter<_Compare>::operator()(_Iterator1, _Iterator2) [with _Iterator1 = int; _Iterator2 = int; _Compare = const char*]':
C:/Users/maxli/AppData/Local/JetBrains/Toolbox/apps/CLion/ch-0/232.8660.186/bin/mingw/lib/gcc/x86_64-w64-mingw32/13.1.0/include/c++/bits/stl_algo.h:179:22:   required from '_ForwardIterator1 std::__search(_ForwardIterator1, _ForwardIterator1, _ForwardIterator2, _ForwardIterator2, _BinaryPredicate) [with _ForwardIterator1 = int; _ForwardIterator2 = int; _BinaryPredicate = __gnu_cxx::__ops::_Iter_comp_iter<const char*>]'
C:/Users/maxli/AppData/Local/JetBrains/Toolbox/apps/CLion/ch-0/232.8660.186/bin/mingw/lib/gcc/x86_64-w64-mingw32/13.1.0/include/c++/bits/stl_algo.h:4191:27:   required from '_FIter1 std::search(_FIter1, _FIter1, _FIter2, _FIter2, _BinaryPredicate) [with _FIter1 = int; _FIter2 = int; _BinaryPredicate = const char*]'
C:/Users/maxli/CLionProjects/C++_Testing_Environment/main.cpp:24:28:   required from here
C:/Users/maxli/AppData/Local/JetBrains/Toolbox/apps/CLion/ch-0/232.8660.186/bin/mingw/lib/gcc/x86_64-w64-mingw32/13.1.0/include/c++/bits/predefined_ops.h:158:31: error: invalid type argument of unary '*' (have 'int')
  158 |         { return bool(_M_comp(*__it1, *__it2)); }
      |                               ^~~~~~
C:/Users/maxli/AppData/Local/JetBrains/Toolbox/apps/CLion/ch-0/232.8660.186/bin/mingw/lib/gcc/x86_64-w64-mingw32/13.1.0/include/c++/bits/predefined_ops.h:158:39: error: invalid type argument of unary '*' (have 'int')
  158 |         { return bool(_M_comp(*__it1, *__it2)); }
      |                                       ^~~~~~
C:/Users/maxli/AppData/Local/JetBrains/Toolbox/apps/CLion/ch-0/232.8660.186/bin/mingw/lib/gcc/x86_64-w64-mingw32/13.1.0/include/c++/bits/predefined_ops.h:158:30: error: expression cannot be used as a function
  158 |         { return bool(_M_comp(*__it1, *__it2)); }
      |                       ~~~~~~~^~~~~~~~~~~~~~~~
C:/Users/maxli/CLionProjects/C++_Testing_Environment/main.cpp: In function 'int search(int, int, int, int, std::string)':
C:/Users/maxli/CLionProjects/C++_Testing_Environment/main.cpp:13:11: warning: control reaches end of non-void function [-Wreturn-type]
   13 |     search(C1, C2, C3, C4, op_string + '/');
      |     ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ninja: build stopped: subcommand failed.
Alan Birtles
  • 32,622
  • 4
  • 31
  • 60
  • 3
    Please show a [mre] and the full compiler output. Getting rid of your obfuscating macros would be nice too – Alan Birtles Aug 14 '23 at 08:44
  • My guess without seeing the error message would be https://stackoverflow.com/questions/1452721/why-is-using-namespace-std-considered-bad-practice in relation to `std::search` – Alan Birtles Aug 14 '23 at 08:46
  • `search` does not return a value on all paths. – molbdnilo Aug 14 '23 at 08:47
  • Your search is not always returning a value, turn on compiler warnings. – Quimby Aug 14 '23 at 08:47
  • Alan, thank you for your answer. I have forgotten all along about not using functions with counterparts in the standard library. I think that is the problem. – TheEccentricDuck Aug 14 '23 at 08:50
  • To the other commenters telling me that search doesn't return a value on all control paths, that is true, and it is because I have not yet finished the code. – TheEccentricDuck Aug 14 '23 at 08:51
  • unfinished code should still compile. Code is never finished – 463035818_is_not_an_ai Aug 14 '23 at 08:52
  • Yes, I agree, and I have solved the problem with the help of Alan Birtles. – TheEccentricDuck Aug 14 '23 at 08:53
  • Note that removing `using namespace std;` (and adding `std::` where needed) fixes the error. (But to be fair, this doesn't always help in those cases.) – HolyBlackCat Aug 14 '23 at 08:53
  • these includes and `using namespace std;` and macros is a nightmare. No wonder you get hard to trace warnings and errors. – 463035818_is_not_an_ai Aug 14 '23 at 08:54
  • See [Why should I not #include ?](https://stackoverflow.com/q/31816095/2752075) and [Why is "using namespace std;" considered bad practice?](https://stackoverflow.com/questions/1452721/why-is-using-namespace-std-considered-bad-practice). – HolyBlackCat Aug 14 '23 at 08:55
  • Yeah I understand, if this were a project, I would be employing best programming practises; however, I prioritise speed over programming practises during timed conditions, thus the need for ```using namespace std;``` and several macros. – TheEccentricDuck Aug 14 '23 at 08:55
  • I actually used to do all these things you have mentioned, including always using ```std::``` instead of the namespace, but I decided to change just for this specific purpose. – TheEccentricDuck Aug 14 '23 at 08:56

0 Answers0