PerceMon
utils.hpp
1#pragma once
2
3#ifndef __PERCEMON_UTILS_HPP__
4#define __PERCEMON_UTILS_HPP__
5
6#include <algorithm>
7#include <iterator>
8#include <type_traits>
9#include <vector>
10
11namespace percemon::utils {
12
16template <typename T, typename... Args>
17struct is_one_of : std::disjunction<std::is_same<std::decay_t<T>, Args>...> {};
18template <typename T, typename... Args>
19inline constexpr bool is_one_of_v = is_one_of<T, Args...>::value;
20
26template <class... Ts>
27struct overloaded : Ts... {
28 using Ts::operator()...;
29};
30template <class... Ts>
31overloaded(Ts...)->overloaded<Ts...>;
32
33} // namespace percemon::utils
34
35#endif /* end of include guard: __PERCEMON_UTILS_HPP__ */
Definition: utils.hpp:17
Definition: utils.hpp:27