CXXGraph icon indicating copy to clipboard operation
CXXGraph copied to clipboard

include <algorithm> for gcc 14 compilation errors

Open toge opened this issue 1 year ago • 2 comments

I met a lot of compilation errors on gcc 14: It seems to be caused by a lack of including header. This PR is fixed this problem.

Please review it.

CXXGraph 3.1.0 compilation errors on gcc 14

In file included from include/CXXGraph/Graph/Graph.h:23, from include/CXXGraph/CXXGraph.hpp:11, from test_package.cpp:3: include/CXXGraph/Graph/Graph_impl.hpp: In member function ‘virtual void CXXGraph::Graph<T>::setNodeData(const std::string&, T)’: include/CXXGraph/Graph/Graph_impl.hpp:316:22: error: ‘find_if’ is not a member of ‘std’; did you mean ‘find’? 316 | auto nodeIt = std::find_if( | ^~~~~~~ | find include/CXXGraph/Graph/Graph_impl.hpp: In member function ‘virtual std::shared_ptr<std::vector<CXXGraph::Node<T> > > CXXGraph::Graph<T>::eulerianPath() const’: include/CXXGraph/Graph/Graph_impl.hpp:465:27: error: ‘max_element’ is not a member of ‘std’; did you mean ‘tuple_element’? 465 | auto firstNodeIt = std::max_element( | ^~~~~~~~~~~ | tuple_element include/CXXGraph/Graph/Graph_impl.hpp: In member function ‘virtual const std::vector<CXXGraph::Node<T> > CXXGraph::Graph<T>::graph_slicing(const CXXGraph::Node<T>&) const’: include/CXXGraph/Graph/Graph_impl.hpp:775:29: error: ‘find_if’ is not a member of ‘std’; did you mean ‘find’? 775 | auto start_node_it = std::find_if( | ^~~~~~~ | find include/CXXGraph/Graph/Graph_impl.hpp:785:14: error: ‘find_if’ is not a member of ‘std’; did you mean ‘find’? 785 | if (std::find_if(C.begin(), C.end(), [node](const Node<T> nodeC) { | ^~~~~~~ | find include/CXXGraph/Graph/Graph_impl.hpp:800:14: error: ‘find_if’ is not a member of ‘std’; did you mean ‘find’? 800 | if (std::find_if(M.begin(), M.end(), [nodeC](const Node<T> nodeM) { | ^~~~~~~ | find In file included from include/CXXGraph/Graph/Graph.h:26: include/CXXGraph/Graph/Algorithm/BellmanFord_impl.hpp: In member function ‘virtual const CXXGraph::BellmanFordResult CXXGraph::Graph<T>::bellmanford(const CXXGraph::Node<T>&, const CXXGraph::Node<T>&) const’: include/CXXGraph/Graph/Algorithm/BellmanFord_impl.hpp:36:30: error: ‘find_if’ is not a member of ‘std’; did you mean ‘find’? 36 | auto source_node_it = std::find_if( | ^~~~~~~ | find include/CXXGraph/Graph/Algorithm/BellmanFord_impl.hpp:44:30: error: ‘find_if’ is not a member of ‘std’; did you mean ‘find’? 44 | auto target_node_it = std::find_if( | ^~~~~~~ | find In file included from include/CXXGraph/Graph/Graph.h:27: include/CXXGraph/Graph/Algorithm/BestFirstSearch_impl.hpp: In member function ‘virtual CXXGraph::BestFirstSearchResult<T> CXXGraph::Graph<T>::best_first_search(const CXXGraph::Node<T>&, const CXXGraph::Node<T>&) const’: include/CXXGraph/Graph/Algorithm/BestFirstSearch_impl.hpp:40:30: error: ‘find_if’ is not a member of ‘std’; did you mean ‘find’? 40 | auto source_node_it = std::find_if( | ^~~~~~~ | find include/CXXGraph/Graph/Algorithm/BestFirstSearch_impl.hpp:48:30: error: ‘find_if’ is not a member of ‘std’; did you mean ‘find’? 48 | auto target_node_it = std::find_if( | ^~~~~~~ | find include/CXXGraph/Graph/Algorithm/BestFirstSearch_impl.hpp: In member function ‘virtual const std::vector<CXXGraph::Node<T> > CXXGraph::Graph<T>::concurrency_breadth_first_search(const CXXGraph::Node<T>&, size_t) const’: include/CXXGraph/Graph/Algorithm/BestFirstSearch_impl.hpp:111:29: error: ‘find_if’ is not a member of ‘std’; did you mean ‘find’? 111 | auto start_node_it = std::find_if( | ^~~~~~~ | find In file included from include/CXXGraph/Graph/Graph.h:29: include/CXXGraph/Graph/Algorithm/BreadthFirstSearch_impl.hpp: In member function ‘virtual const std::vector<CXXGraph::Node<T> > CXXGraph::Graph<T>::breadth_first_search(const CXXGraph::Node<T>&) const’: include/CXXGraph/Graph/Algorithm/BreadthFirstSearch_impl.hpp:36:29: error: ‘find_if’ is not a member of ‘std’; did you mean ‘find’? 36 | auto start_node_it = std::find_if( | ^~~~~~~ | find In file included from include/CXXGraph/Graph/Graph.h:31: include/CXXGraph/Graph/Algorithm/CycleDetection_impl.hpp: In member function ‘virtual bool CXXGraph::Graph<T>::containsCycle(CXXGraph::T_EdgeSet<T>*) const’: include/CXXGraph/Graph/Algorithm/CycleDetection_impl.hpp:122:16: error: ‘find_if’ is not a member of ‘std’; did you mean ‘find’? 122 | if (std::find_if((*subset).begin(), (*subset).end(), nodeExists) == | ^~~~~~~ | find include/CXXGraph/Graph/Algorithm/CycleDetection_impl.hpp: In member function ‘virtual bool CXXGraph::Graph<T>::containsCycle(CXXGraph::shared<const std::unordered_set<std::shared_ptr<const CXXGraph::Edge<T> >, CXXGraph::edgeHash<T> > >) const’: include/CXXGraph/Graph/Algorithm/CycleDetection_impl.hpp:148:16: error: ‘find_if’ is not a member of ‘std’; did you mean ‘find’? 148 | if (std::find_if((*subset).begin(), (*subset).end(), nodeExists) == | ^~~~~~~ | find In file included from include/CXXGraph/Graph/Graph.h:32: include/CXXGraph/Graph/Algorithm/DepthFirstSearch_impl.hpp: In member function ‘virtual const std::vector<CXXGraph::Node<T> > CXXGraph::Graph<T>::depth_first_search(const CXXGraph::Node<T>&) const’: include/CXXGraph/Graph/Algorithm/DepthFirstSearch_impl.hpp:36:29: error: ‘find_if’ is not a member of ‘std’; did you mean ‘find’? 36 | auto start_node_it = std::find_if( | ^~~~~~~ | find In file included from include/CXXGraph/Graph/Graph.h:33: include/CXXGraph/Graph/Algorithm/Dial_impl.hpp: In member function ‘virtual const CXXGraph::DialResult CXXGraph::Graph<T>::dial(const CXXGraph::Node<T>&, int) const’: include/CXXGraph/Graph/Algorithm/Dial_impl.hpp:36:30: error: ‘find_if’ is not a member of ‘std’; did you mean ‘find’? 36 | auto source_node_it = std::find_if( | ^~~~~~~ | find include/CXXGraph/Graph/Algorithm/Dial_impl.hpp:112:23: error: ‘find_if’ is not a member of ‘std’; did you mean ‘find’? 112 | auto u_i = std::find_if( | ^~~~~~~ | find include/CXXGraph/Graph/Algorithm/Dial_impl.hpp:119:23: error: ‘find_if’ is not a member of ‘std’; did you mean ‘find’? 119 | auto v_i = std::find_if( | ^~~~~~~ | find In file included from include/CXXGraph/Graph/Graph.h:34: include/CXXGraph/Graph/Algorithm/Dijkstra_impl.hpp: In member function ‘virtual const CXXGraph::DijkstraResult CXXGraph::Graph<T>::dijkstra(const CXXGraph::Node<T>&, const CXXGraph::Node<T>&) const’: include/CXXGraph/Graph/Algorithm/Dijkstra_impl.hpp:34:30: error: ‘find_if’ is not a member of ‘std’; did you mean ‘find’? 34 | auto source_node_it = std::find_if( | ^~~~~~~ | find include/CXXGraph/Graph/Algorithm/Dijkstra_impl.hpp:43:30: error: ‘find_if’ is not a member of ‘std’; did you mean ‘find’? 43 | auto target_node_it = std::find_if( | ^~~~~~~ | find include/CXXGraph/Graph/Algorithm/Dijkstra_impl.hpp:145:10: error: ‘reverse’ is not a member of ‘std’ 145 | std::reverse(result.path.begin(), result.path.end()); | ^~~~~~~ In file included from include/CXXGraph/Graph/Graph.h:36: include/CXXGraph/Graph/Algorithm/FordFulkerson_impl.hpp: In member function ‘virtual double CXXGraph::Graph<T>::fordFulkersonMaxFlow(const CXXGraph::Node<T>&, const CXXGraph::Node<T>&) const’: include/CXXGraph/Graph/Algorithm/FordFulkerson_impl.hpp:61:32: error: ‘find_if’ is not a member of ‘std’; did you mean ‘find’? 61 | auto source_node_ptr = *std::find_if( | ^~~~~~~ | find include/CXXGraph/Graph/Algorithm/FordFulkerson_impl.hpp:64:32: error: ‘find_if’ is not a member of ‘std’; did you mean ‘find’? 64 | auto target_node_ptr = std::find_if( | ^~~~~~~ | find include/CXXGraph/Graph/Algorithm/FordFulkerson_impl.hpp: In lambda function: include/CXXGraph/Graph/Algorithm/FordFulkerson_impl.hpp:72:16: error: ‘source_node_ptr’ is not captured 72 | queue.push(source_node_ptr); | ^~~~~~~~~~~~~~~ include/CXXGraph/Graph/Algorithm/FordFulkerson_impl.hpp:69:32: note: the lambda has no capture-default 69 | &weightMap]() -> bool { | ^ include/CXXGraph/Graph/Algorithm/FordFulkerson_impl.hpp:61:8: note: ‘source_node_ptr’ declared here 61 | auto source_node_ptr = std::find_if( | ^~~~~~~~~~~~~~~ include/CXXGraph/Graph/Algorithm/FordFulkerson_impl.hpp:73:13: error: ‘source_node_ptr’ is not captured 73 | visited[source_node_ptr] = true; | ^~~~~~~~~~~~~~~ include/CXXGraph/Graph/Algorithm/FordFulkerson_impl.hpp:69:32: note: the lambda has no capture-default 69 | &weightMap]() -> bool { | ^ include/CXXGraph/Graph/Algorithm/FordFulkerson_impl.hpp:61:8: note: ‘source_node_ptr’ declared here 61 | auto source_node_ptr = std::find_if( | ^~~~~~~~~~~~~~~ include/CXXGraph/Graph/Algorithm/FordFulkerson_impl.hpp:74:12: error: ‘source_node_ptr’ is not captured 74 | parent[source_node_ptr] = nullptr; | ^~~~~~~~~~~~~~~ include/CXXGraph/Graph/Algorithm/FordFulkerson_impl.hpp:69:32: note: the lambda has no capture-default 69 | &weightMap]() -> bool { | ^ include/CXXGraph/Graph/Algorithm/FordFulkerson_impl.hpp:61:8: note: ‘source_node_ptr’ declared here 61 | auto source_node_ptr = std::find_if( | ^~~~~~~~~~~~~~~ include/CXXGraph/Graph/Algorithm/FordFulkerson_impl.hpp:87:21: error: ‘target_node_ptr’ is not captured 87 | return (visited[target_node_ptr]); | ^~~~~~~~~~~~~~~ include/CXXGraph/Graph/Algorithm/FordFulkerson_impl.hpp:69:32: note: the lambda has no capture-default 69 | &weightMap]() -> bool { | ^ include/CXXGraph/Graph/Algorithm/FordFulkerson_impl.hpp:64:8: note: ‘target_node_ptr’ declared here 64 | auto target_node_ptr = std::find_if( | ^~~~~~~~~~~~~~~ In file included from include/CXXGraph/Graph/Graph.h:42: include/CXXGraph/Graph/Algorithm/TopologicalSort_impl.hpp: In member function ‘virtual CXXGraph::TopoSortResult<T> CXXGraph::Graph<T>::topologicalSort() const’: include/CXXGraph/Graph/Algorithm/TopologicalSort_impl.hpp:71:10: error: ‘reverse’ is not a member of ‘std’ 71 | std::reverse(result.nodesInTopoOrder.begin(), | ^~~~~~~ In file included from include/CXXGraph/Graph/Graph.h:47: include/CXXGraph/Graph/IO/InputOperation_impl.hpp: In member function ‘int CXXGraph::Graph<T>::readFromDot(const std::string&, const std::string&)’: include/CXXGraph/Graph/IO/InputOperation_impl.hpp:310:42: error: cannot convert ‘std::__cxx11::basic_string::iterator’ to ‘const char’ 310 | node2.erase(std::remove(node2.begin(), node2.end(), ' '), node2.end()); | ~~~~~~~~~~~^~ | | | std::__cxx11::basic_string::iterator In file included from /usr/include/c++/14/cstdio:42, from /usr/include/c++/14/ext/string_conversions.h:45, from /usr/include/c++/14/bits/basic_string.h:4154, from /usr/include/c++/14/string:54, from /usr/include/c++/14/bits/locale_classes.h:40, from /usr/include/c++/14/bits/ios_base.h:41, from /usr/include/c++/14/ios:44, from /usr/include/c++/14/ostream:40, from /usr/include/c++/14/bits/unique_ptr.h:43, from /usr/include/c++/14/memory:78, from test_package.cpp:1: /usr/include/stdio.h:158:32: note: initializing argument 1 of ‘int remove(const char)’ 158 | extern int remove (const char __filename) __THROW; | ~~~~~~~~~~~~^~~~~~~~~~ include/CXXGraph/Graph/IO/InputOperation_impl.hpp:311:42: error: cannot convert ‘std::__cxx11::basic_string::iterator’ to ‘const char’ 311 | node2.erase(std::remove(node2.begin(), node2.end(), '\t'), node2.end()); | ~~~~~~~~~~~^~ | | | std::__cxx11::basic_string::iterator /usr/include/stdio.h:158:32: note: initializing argument 1 of ‘int remove(const char)’ 158 | extern int remove (const char __filename) __THROW; | ~~~~~~~~~~~~^~~~~~~~~~ include/CXXGraph/Graph/IO/InputOperation_impl.hpp:317:44: error: cannot convert ‘std::__cxx11::basic_string::iterator’ to ‘const char’ 317 | weight.erase(std::remove(weight.begin(), weight.end(), ' '), | ~~~~~~~~~~~~^~ | | | std::__cxx11::basic_string::iterator /usr/include/stdio.h:158:32: note: initializing argument 1 of ‘int remove(const char)’ 158 | extern int remove (const char __filename) __THROW; | ~~~~~~~~~~~~^~~~~~~~~~ In file included from include/CXXGraph/Graph/Graph.h:48: include/CXXGraph/Graph/IO/OutputOperation_impl.hpp: In member function ‘virtual int CXXGraph::Graph<T>::writeToMTXFile(const std::string&, const std::string&, char) const’: include/CXXGraph/Graph/IO/OutputOperation_impl.hpp:161:26: error: ‘any_of’ is not a member of ‘std’ 161 | bool symmetric = !std::any_of(edgeSet.begin(), edgeSet.end(), [](auto edge) { | ^~~~~~ In file included from include/CXXGraph/Graph/Graph.h:40: include/CXXGraph/Graph/Algorithm/Prim_impl.hpp: In instantiation of ‘const CXXGraph::MstResult CXXGraph::Graph<T>::prim() const [with T = int; CXXGraph::MstResult = CXXGraph::MstResult_struct]’: include/CXXGraph/Graph/Algorithm/Prim_impl.hpp:30:17: required from here include/CXXGraph/Graph/IO/OutputOperation_impl.hpp:161:26: error: 30 | const MstResult Graph<T>::prim() const { include/CXXGraph/Graph/IO/OutputOperation_impl.hpp:161:26: error: | ^~~~~~~~ include/CXXGraph/Graph/Algorithm/Prim_impl.hpp:75:18: error: no matching function for call to ‘find(std::vector::iterator, std::vector::iterator, long unsigned int&)’ 75 | if (std::find(doneNode.begin(), doneNode.end(), nodeId) == doneNode.end()) { | ~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from /usr/include/c++/14/bits/locale_facets.h:48, from /usr/include/c++/14/bits/basic_ios.h:37, from /usr/include/c++/14/ios:46: /usr/include/c++/14/bits/streambuf_iterator.h:435:5: note: candidate: ‘template<class _CharT2> typename __gnu_cxx::__enable_if<std::__is_char<_CharT2>::__value, std::istreambuf_iterator<_CharT, std::char_traits<_CharT> > >::__type std::find(istreambuf_iterator<_CharT, char_traits<_CharT> >, istreambuf_iterator<_CharT, char_traits<_CharT> >, const _CharT2&)’ 435 | find(istreambuf_iterator<_CharT> __first, | ^~~~ /usr/include/c++/14/bits/streambuf_iterator.h:435:5: note: template argument deduction/substitution failed: include/CXXGraph/Graph/Algorithm/Prim_impl.hpp:75:18: note: ‘__gnu_cxx::__normal_iterator<long unsigned int, std::vector >’ is not derived from ‘std::istreambuf_iterator<_CharT, std::char_traits<_CharT> >’ 75 | if (std::find(doneNode.begin(), doneNode.end(), nodeId) == doneNode.end()) { | ~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ include/CXXGraph/Graph/Algorithm/Prim_impl.hpp:94:25: error: no matching function for call to ‘find(std::vector::iterator, std::vector::iterator, const CXXGraph::id_t&)’ 94 | (std::find(doneNode.begin(), doneNode.end(), | ~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 95 | elem.first->getId()) == doneNode.end())) { | ~~~~~~~~~~~~~~~~~~~~ /usr/include/c++/14/bits/streambuf_iterator.h:435:5: note: candidate: ‘template<class _CharT2> typename __gnu_cxx::__enable_if<std::__is_char<_CharT2>::__value, std::istreambuf_iterator<_CharT, std::char_traits<_CharT> > >::__type std::find(istreambuf_iterator<_CharT, char_traits<_CharT> >, istreambuf_iterator<_CharT, char_traits<_CharT> >, const _CharT2&)’ 435 | find(istreambuf_iterator<_CharT> __first, | ^~~~ /usr/include/c++/14/bits/streambuf_iterator.h:435:5: note: template argument deduction/substitution failed: include/CXXGraph/Graph/Algorithm/Prim_impl.hpp:94:25: note: ‘__gnu_cxx::__normal_iterator<long unsigned int, std::vector >’ is not derived from ‘std::istreambuf_iterator<_CharT, std::char_traits<_CharT> >’ 94 | (std::find(doneNode.begin(), doneNode.end(), | ~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 95 | elem.first->getId()) == doneNode.end())) { | ~~~~~~~~~~~~~~~~~~~~ include/CXXGraph/Graph/Algorithm/BestFirstSearch_impl.hpp: In instantiation of ‘CXXGraph::BestFirstSearchResult<T> CXXGraph::Graph<T>::best_first_search(const CXXGraph::Node<T>&, const CXXGraph::Node<T>&) const [with T = int; CXXGraph::BestFirstSearchResult<T> = CXXGraph::BestFirstSearchResult_struct]’: include/CXXGraph/Graph/Algorithm/BestFirstSearch_impl.hpp:34:26: required from here include/CXXGraph/Graph/Algorithm/Prim_impl.hpp:94:25: note: 34 | BestFirstSearchResult<T> Graph<T>::best_first_search( include/CXXGraph/Graph/Algorithm/Prim_impl.hpp:94:25: note: | ^~~~~~~~ include/CXXGraph/Graph/Algorithm/BestFirstSearch_impl.hpp:77:26: error: no matching function for call to ‘find(std::vector<CXXGraph::Node, std::allocator<CXXGraph::Node > >::iterator, std::vector<CXXGraph::Node, std::allocator<CXXGraph::Node > >::iterator, std::__shared_ptr_access<const CXXGraph::Node, __gnu_cxx::_S_atomic, false, false>::element_type&)’ 77 | if (std::find(visited.begin(), visited.end(), (elem.first)) == | ~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /usr/include/c++/14/bits/streambuf_iterator.h:435:5: note: candidate: ‘template<class _CharT2> typename __gnu_cxx::__enable_if<std::__is_char<_CharT2>::__value, std::istreambuf_iterator<_CharT, std::char_traits<_CharT> > >::__type std::find(istreambuf_iterator<_CharT, char_traits<_CharT> >, istreambuf_iterator<_CharT, char_traits<_CharT> >, const _CharT2&)’ 435 | find(istreambuf_iterator<_CharT> __first, | ^~~~ /usr/include/c++/14/bits/streambuf_iterator.h:435:5: note: template argument deduction/substitution failed: include/CXXGraph/Graph/Algorithm/BestFirstSearch_impl.hpp:77:26: note: ‘__gnu_cxx::__normal_iterator<CXXGraph::Node, std::vector<CXXGraph::Node, std::allocator<CXXGraph::Node > > >’ is not derived from ‘std::istreambuf_iterator<_CharT, std::char_traits<_CharT> >’ 77 | if (std::find(visited.begin(), visited.end(), *(elem.first)) == | ~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ include/CXXGraph/Graph/Algorithm/BestFirstSearch_impl.hpp:86:26: error: no matching function for call to ‘find(std::vector<CXXGraph::Node, std::allocator<CXXGraph::Node > >::iterator, std::vector<CXXGraph::Node, std::allocator<CXXGraph::Node > >::iterator, std::__shared_ptr_access<const CXXGraph::Node, __gnu_cxx::_S_atomic, false, false>::element_type&)’ 86 | if (std::find(visited.begin(), visited.end(), (elem.first)) == | ~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /usr/include/c++/14/bits/streambuf_iterator.h:435:5: note: candidate: ‘template<class _CharT2> typename __gnu_cxx::__enable_if<std::__is_char<_CharT2>::__value, std::istreambuf_iterator<_CharT, std::char_traits<_CharT> > >::__type std::find(istreambuf_iterator<_CharT, char_traits<_CharT> >, istreambuf_iterator<_CharT, char_traits<_CharT> >, const _CharT2&)’ 435 | find(istreambuf_iterator<_CharT> __first, | ^~~~ /usr/include/c++/14/bits/streambuf_iterator.h:435:5: note: template argument deduction/substitution failed: include/CXXGraph/Graph/Algorithm/BestFirstSearch_impl.hpp:86:26: note: ‘__gnu_cxx::__normal_iterator<CXXGraph::Node, std::vector<CXXGraph::Node, std::allocator<CXXGraph::Node > > >’ is not derived from ‘std::istreambuf_iterator<_CharT, std::char_traits<_CharT> >’ 86 | if (std::find(visited.begin(), visited.end(), *(elem.first)) == | ~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ include/CXXGraph/Graph/Algorithm/BreadthFirstSearch_impl.hpp: In instantiation of ‘const std::vector<CXXGraph::Node<T> > CXXGraph::Graph<T>::breadth_first_search(const CXXGraph::Node<T>&) const [with T = int]’: include/CXXGraph/Graph/Algorithm/BreadthFirstSearch_impl.hpp:30:28: required from here include/CXXGraph/Graph/Algorithm/BestFirstSearch_impl.hpp:86:26: note: 30 | const std::vector<Node<T>> Graph<T>::breadth_first_search( include/CXXGraph/Graph/Algorithm/BestFirstSearch_impl.hpp:86:26: note: | ^~~~~~~~ include/CXXGraph/Graph/Algorithm/BreadthFirstSearch_impl.hpp:55:22: error: no matching function for call to ‘find(std::vector<CXXGraph::Node, std::allocator<CXXGraph::Node > >::iterator, std::vector<CXXGraph::Node, std::allocator<CXXGraph::Node > >::iterator, std::__shared_ptr_access<const CXXGraph::Node, __gnu_cxx::_S_atomic, false, false>::element_type&)’ 55 | if (std::find(visited.begin(), visited.end(), (elem.first)) == | ~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /usr/include/c++/14/bits/streambuf_iterator.h:435:5: note: candidate: ‘template<class _CharT2> typename __gnu_cxx::__enable_if<std::__is_char<_CharT2>::__value, std::istreambuf_iterator<_CharT, std::char_traits<_CharT> > >::__type std::find(istreambuf_iterator<_CharT, char_traits<_CharT> >, istreambuf_iterator<_CharT, char_traits<_CharT> >, const _CharT2&)’ 435 | find(istreambuf_iterator<_CharT> __first, | ^~~~ /usr/include/c++/14/bits/streambuf_iterator.h:435:5: note: template argument deduction/substitution failed: include/CXXGraph/Graph/Algorithm/BreadthFirstSearch_impl.hpp:55:22: note: ‘__gnu_cxx::__normal_iterator<CXXGraph::Node, std::vector<CXXGraph::Node, std::allocator<CXXGraph::Node > > >’ is not derived from ‘std::istreambuf_iterator<_CharT, std::char_traits<_CharT> >’ 55 | if (std::find(visited.begin(), visited.end(), *(elem.first)) == | ~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ include/CXXGraph/Graph/Algorithm/DepthFirstSearch_impl.hpp: In instantiation of ‘const std::vector<CXXGraph::Node<T> > CXXGraph::Graph<T>::depth_first_search(const CXXGraph::Node<T>&) const [with T = int]’: include/CXXGraph/Graph/Algorithm/DepthFirstSearch_impl.hpp:30:28: required from here include/CXXGraph/Graph/Algorithm/BreadthFirstSearch_impl.hpp:55:22: note: 30 | const std::vector<Node<T>> Graph<T>::depth_first_search( include/CXXGraph/Graph/Algorithm/BreadthFirstSearch_impl.hpp:55:22: note: | ^~~~~~~~ include/CXXGraph/Graph/Algorithm/DepthFirstSearch_impl.hpp:51:22: error: no matching function for call to ‘find(std::vector<CXXGraph::Node, std::allocator<CXXGraph::Node > >::iterator, std::vector<CXXGraph::Node, std::allocator<CXXGraph::Node > >::iterator, std::__shared_ptr_access<const CXXGraph::Node, __gnu_cxx::_S_atomic, false, false>::element_type&)’ 51 | if (std::find(visited.begin(), visited.end(), (x.first)) == | ~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /usr/include/c++/14/bits/streambuf_iterator.h:435:5: note: candidate: ‘template<class _CharT2> typename __gnu_cxx::__enable_if<std::__is_char<_CharT2>::__value, std::istreambuf_iterator<_CharT, std::char_traits<_CharT> > >::__type std::find(istreambuf_iterator<_CharT, char_traits<_CharT> >, istreambuf_iterator<_CharT, char_traits<_CharT> >, const _CharT2&)’ 435 | find(istreambuf_iterator<_CharT> __first, | ^~~~ /usr/include/c++/14/bits/streambuf_iterator.h:435:5: note: template argument deduction/substitution failed: include/CXXGraph/Graph/Algorithm/DepthFirstSearch_impl.hpp:51:22: note: ‘__gnu_cxx::__normal_iterator<CXXGraph::Node, std::vector<CXXGraph::Node, std::allocator<CXXGraph::Node > > >’ is not derived from ‘std::istreambuf_iterator<_CharT, std::char_traits<_CharT> >’ 51 | if (std::find(visited.begin(), visited.end(), (x.first)) == | ~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ include/CXXGraph/Graph/Algorithm/Dial_impl.hpp: In instantiation of ‘const CXXGraph::DialResult CXXGraph::Graph<T>::dial(const CXXGraph::Node<T>&, int) const [with T = int; CXXGraph::DialResult = CXXGraph::DialResult_struct]’: include/CXXGraph/Graph/Algorithm/Dial_impl.hpp:30:18: required from here include/CXXGraph/Graph/Algorithm/DepthFirstSearch_impl.hpp:51:22: note: 30 | const DialResult Graph<T>::dial(const Node<T> &source, int maxWeight) const { include/CXXGraph/Graph/Algorithm/DepthFirstSearch_impl.hpp:51:22: note: | ^~~~~~~~ include/CXXGraph/Graph/Algorithm/Dial_impl.hpp:134:36: error: no matching function for call to ‘find(std::deque<std::shared_ptr<const CXXGraph::Node >, std::allocator<std::shared_ptr<const CXXGraph::Node > > >::iterator, std::deque<std::shared_ptr<const CXXGraph::Node >, std::allocator<std::shared_ptr<const CXXGraph::Node > > >::iterator, std::shared_ptr<const CXXGraph::Node >&)’ 134 | auto findIter = std::find(B[dv].begin(), B[dv].end(), dist[v].second); | ~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /usr/include/c++/14/bits/streambuf_iterator.h:435:5: note: candidate: ‘template<class _CharT2> typename __gnu_cxx::__enable_if<std::__is_char<_CharT2>::__value, std::istreambuf_iterator<_CharT, std::char_traits<_CharT> > >::__type std::find(istreambuf_iterator<_CharT, char_traits<_CharT> >, istreambuf_iterator<_CharT, char_traits<_CharT> >, const _CharT2&)’ 435 | find(istreambuf_iterator<_CharT> __first, | ^~~~ /usr/include/c++/14/bits/streambuf_iterator.h:435:5: note: template argument deduction/substitution failed: include/CXXGraph/Graph/Algorithm/Dial_impl.hpp:134:36: note: ‘std::_Deque_iterator<std::shared_ptr<const CXXGraph::Node >, std::shared_ptr<const CXXGraph::Node >&, std::shared_ptr<const CXXGraph::Node >>’ is not derived from ‘std::istreambuf_iterator<_CharT, std::char_traits<_CharT> >’ 134 | auto findIter = std::find(B[dv].begin(), B[dv].end(), dist[v].second); | ~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

toge avatar May 05 '24 17:05 toge

@ZigRazor @nolankramer I update this PR to include only on *_impl.hpp. Could you review it again?

toge avatar May 12 '24 15:05 toge

Codecov Report

All modified and coverable lines are covered by tests :white_check_mark:

Project coverage is 97.87%. Comparing base (1b31e63) to head (58a20a4). Report is 25 commits behind head on master.

Additional details and impacted files
@@            Coverage Diff             @@
##           master     #428      +/-   ##
==========================================
+ Coverage   97.58%   97.87%   +0.28%     
==========================================
  Files          87       87              
  Lines        9492    10057     +565     
  Branches        0      666     +666     
==========================================
+ Hits         9263     9843     +580     
+ Misses        229      214      -15     
Flag Coverage Δ
unittests 97.87% <ø> (+0.28%) :arrow_up:

Flags with carried forward coverage won't be shown. Click here to find out more.

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.

codecov[bot] avatar May 13 '24 06:05 codecov[bot]