| 
| 
template<class Rng >  | 
| auto  | CppClingo::Util::copy_n (Rng const &rng, size_t n) -> std::vector< typename Rng::value_type > | 
|   | Return a vector with the first n elements from the given one. 
  | 
|   | 
| 
template<class T , class... Ts>  | 
| auto  | CppClingo::Util::make_vec (Ts &&...args) -> std::vector< T > | 
|   | Avoids copies of initializer_lists. 
  | 
|   | 
| 
template<class Container , std::input_iterator It, std::sentinel_for< It > Sent, typename Pred >  | 
| void  | CppClingo::Util::into_vec (Container &vec, It first, Sent last, Pred &&pred) | 
|   | Map a range into a vector using a transformation function. 
  | 
|   | 
| 
template<class Container , class Rng , class Pred >  | 
| void  | CppClingo::Util::into_vec (Container &vec, Rng &&rng, Pred &&pred) | 
|   | Map a range into a vector using a transformation function. 
  | 
|   | 
| 
template<class Container , std::input_iterator It, std::sentinel_for< It > Sent, typename Pred , typename... Args>  | 
| auto  | CppClingo::Util::to_vec (It begin, Sent end, Pred &&pred, Args &&...args) | 
|   | Use a transformation function to build a vector from a range. 
  | 
|   | 
| 
template<template< class, class... > class Container = std::vector, std::ranges::input_range Rng, typename Pred , typename... Args>  | 
| auto  | CppClingo::Util::to_vec (Rng &&rng, Pred pred, Args &&...args) | 
|   | Use std::transform to build a vector. 
  | 
|   | 
| 
template<class It , class Pred >  | 
| auto  | CppClingo::Util::transform_n (It begin, size_t n, Pred pred) | 
|   | Use std::transform to build a vector. 
  | 
|   | 
| 
template<class Vec , class Pred >  | 
| auto  | CppClingo::Util::erase_if (Vec &vec, Pred pred) -> size_t | 
|   | Remove all elements from the vector matching the given predicate. 
  | 
|   | 
| 
void  | CppClingo::Util::unreachable () | 
|   | C++23's std::unreachable. 
  | 
|   | 
template<iterable U>  
requires std::is_lvalue_reference_v<U> | 
|   | CppClingo::Util::enumerate (U &&x) -> enumerate< decltype(x.begin())> | 
|   | Deduction guide for iterables. 
  | 
|   | 
| template<std::forward_iterator T>  | 
|   | CppClingo::Util::enumerate (T begin, T end) -> enumerate< T > | 
|   | Deduction guide for forward iterators.  
  | 
|   | 
| 
template<std::integral T>  | 
|   | CppClingo::Util::enumerate (T end) -> enumerate< T > | 
|   | Deduction guide for integrals. 
  | 
|   | 
| 
void  | CppClingo::Util::Graph::ensure_size (size_t n) | 
|   | Ensure that the graph holds at least n nodes. 
  | 
|   | 
| void  | CppClingo::Util::Graph::add_edge (size_t u, size_t v) | 
|   | Add an edge to the graph.  
  | 
|   | 
| auto  | CppClingo::Util::Graph::has_loop (size_t u) const -> bool | 
|   | Check if the given vertex has a loop.  
  | 
|   | 
| template<class Callback >  | 
| void  | CppClingo::Util::Graph::tarjan (Callback cb) | 
|   | Compute the strongly connected components of the graph.  
  | 
|   | 
Generic algorithms used throughout the library.