mirror of
https://github.com/boostorg/mqtt5.git
synced 2025-10-04 21:00:53 +02:00
Summary: resolves T12767 Reviewers: ivica Reviewed By: ivica Subscribers: miljen Tags: #spacetime Maniphest Tasks: T12767 Differential Revision: https://repo.mireo.local/D25970
34 lines
892 B
C++
34 lines
892 B
C++
#ifndef ASYNC_MQTT5_TRAITS_HPP
|
|
#define ASYNC_MQTT5_TRAITS_HPP
|
|
|
|
#include <optional>
|
|
#include <vector>
|
|
|
|
#include <boost/range/iterator_range_core.hpp>
|
|
|
|
namespace async_mqtt5 {
|
|
|
|
template <typename> constexpr bool is_optional_impl = false;
|
|
template <typename T> constexpr bool is_optional_impl<std::optional<T>> = true;
|
|
|
|
template <typename T>
|
|
constexpr bool is_optional = is_optional_impl<std::remove_cvref_t<T>>;
|
|
|
|
template <class, template<class...> class>
|
|
constexpr bool is_specialization = false;
|
|
|
|
template <template<class...> class T, class... Args>
|
|
constexpr bool is_specialization<T<Args...>, T> = true;
|
|
|
|
template <typename T>
|
|
concept is_vector = is_specialization<std::remove_cvref_t<T>, std::vector>;
|
|
|
|
template <typename T>
|
|
concept is_boost_iterator = is_specialization<
|
|
std::remove_cvref_t<T>, boost::iterator_range
|
|
>;
|
|
|
|
} // end namespace async_mqtt5
|
|
|
|
#endif // !ASYNC_MQTT5_TRAITS_HPP
|