9 template <
class InputIt,
class OutputIt,
class Pred,
class Fct>
23 template <
class Cont,
class OutputIt,
class Pred,
class Fct>
29 template <
typename Container,
typename OutputIt,
typename BinaryFunction>
30 void transform(Container container, OutputIt out, BinaryFunction
function)
32 std::transform(container.cbegin(), container.cend(), out,
function);
35 template <
typename Container,
typename T,
typename BinaryFunction>
36 T
accumulate(Container container, T init, BinaryFunction
function)
38 return std::accumulate(container.cbegin(), container.cend(), init,
function);
43 template <
typename To,
template <
typename...>
class Cont,
typename FromPtr>
46 static_assert(std::is_pointer<FromPtr>(),
"FromPtr is not a pointer");
47 static_assert(std::is_base_of<To, std::remove_pointer_t<FromPtr>>(),
"From is not derived from To");
49 return *
reinterpret_cast<const Cont<To*>*
>(&v);
52 template <
typename To,
template <
typename...>
class Cont,
typename FromPtr>
55 static_assert(std::is_pointer<FromPtr>(),
"FromPtr is not a pointer");
56 static_assert(std::is_base_of<To, std::remove_pointer_t<FromPtr>>(),
"From is not derived from To");
58 return *
reinterpret_cast<Cont<To*>*
>(&v);
62 template <
typename Val,
typename Cont>
65 return all_of(begin(cont), end(cont), [](
auto val) {
return dynamic_cast<Val
>(val) !=
nullptr; });
81 template <
typename BaseClass,
template <
typename...>
class Cont,
typename... Derivates>
84 return std::any_of(begin(container),end(container), [](
const auto v) {
return ((
dynamic_cast<Derivates*
>(v) !=
nullptr) || ...); });