|
| template<typename T1 , typename T2 , template< typename U > class Container, typename F > |
| auto | LeechCraft::Util::ZipWith (const Container< T1 > &c1, const Container< T2 > &c2, F f) -> WrapType_t< Container< std::decay_t< std::result_of_t< F(T1, T2)>>>> |
| |
| template<typename T1 , typename T2 , template< typename U > class Container, template< typename U1, typename U2 > class Pair = QPair> |
| auto | LeechCraft::Util::Zip (const Container< T1 > &c1, const Container< T2 > &c2) -> Container< Pair< T1, T2 >> |
| |
| template<typename Res , typename T > |
| void | LeechCraft::Util::detail::Append (Res &result, T &&val, decltype(result.push_back(std::forward< T >(val)))*=nullptr) |
| |
| template<typename Res , typename T > |
| void | LeechCraft::Util::detail::Append (Res &result, T &&val, decltype(result.insert(std::forward< T >(val)))*=nullptr) |
| |
| template<typename T , typename F > |
| constexpr bool | LeechCraft::Util::detail::IsInvokableWithConstImpl (std::result_of_t< F(const T &)> *) |
| |
| template<typename T , typename F > |
| constexpr bool | LeechCraft::Util::detail::IsInvokableWithConstImpl (...) |
| |
| template<typename T , typename F > |
| constexpr bool | LeechCraft::Util::detail::IsInvokableWithConst () |
| |
| template<typename C > |
| constexpr bool | LeechCraft::Util::detail::IsSimpleContainer () |
| |
| template<typename F , typename Cont > |
| constexpr bool | LeechCraft::Util::detail::DoesReturnVoid () |
| |
| template<typename T , template< typename U > class Container, typename F , typename = std::enable_if_t<detail::IsSimpleContainer<Container<T>> ()>, typename = std::enable_if_t<!detail::DoesReturnVoid<F, Container<T>> ()>> |
| auto | LeechCraft::Util::Map (const Container< T > &c, F f) |
| |
| template<typename Container , typename F , template< typename > class ResultCont = QList, typename = std::enable_if_t<!detail::IsSimpleContainer<Container> ()>, typename = std::enable_if_t<!detail::DoesReturnVoid<F, Container> ()>> |
| auto | LeechCraft::Util::Map (const Container &c, F f) |
| |
| template<typename Container , typename F , typename = std::enable_if_t<detail::DoesReturnVoid<F, Container> ()>> |
| auto | LeechCraft::Util::Map (const Container &c, F f) |
| |
| template<typename Container , typename F , typename = std::enable_if_t<detail::DoesReturnVoid<F, Container> ()>> |
| auto | LeechCraft::Util::Map (Container &c, F f) |
| |
| template<typename T , template< typename U > class Container, typename F > |
| Container< T > | LeechCraft::Util::Filter (const Container< T > &c, F f) |
| |
| template<template< typename > class Container, typename T > |
| Container< T > | LeechCraft::Util::Concat (const Container< Container< T >> &containers) |
| |
| template<template< typename...> class Container, typename... ContArgs> |
| auto | LeechCraft::Util::Concat (const Container< ContArgs...> &containers) -> std::decay_t< decltype(*containers.begin())> |
| |
| template<typename Cont , typename F > |
| auto | LeechCraft::Util::ConcatMap (Cont &&c, F &&f) -> decltype(Concat(Map(std::forward< Cont >(c), std::forward< F >(f)))) |
| |
| template<template< typename > class Container, typename T > |
| Container< Container< T > > | LeechCraft::Util::SplitInto (size_t numChunks, const Container< T > &container) |
| |
| template<template< typename Pair, typename...Rest > class Cont, template< typename K, typename V > class Pair, typename K , typename V , typename KV , typename... Rest> |
| boost::optional< V > | LeechCraft::Util::Lookup (const KV &key, const Cont< Pair< K, V >, Rest...> &cont) |
| |
| template<typename Cont > |
| Cont | LeechCraft::Util::Sorted (Cont &&cont) |
| |
| template<typename R > |
| auto | LeechCraft::Util::ComparingBy (R r) |
| |
| template<typename F > |
| auto | LeechCraft::Util::First (F &&f) |
| |
| template<typename F > |
| auto | LeechCraft::Util::Second (F &&f) |
| |
| template<typename F > |
| auto | LeechCraft::Util::Flip (F &&f) |
| |