1#ifndef BOOST_HASH_IS_TUPLE_LIKE_HPP_INCLUDED
2#define BOOST_HASH_IS_TUPLE_LIKE_HPP_INCLUDED
3
4// Copyright 2017, 2022 Peter Dimov.
5// Distributed under the Boost Software License, Version 1.0.
6// https://www.boost.org/LICENSE_1_0.txt
7
8#include <type_traits>
9#include <utility>
10
11namespace boost
12{
13namespace hash_detail
14{
15
16template<class T, class E = std::true_type> struct is_tuple_like_: std::false_type
17{
18};
19
20template<class T> struct is_tuple_like_<T, std::integral_constant<bool, std::tuple_size<T>::value == std::tuple_size<T>::value> >: std::true_type
21{
22};
23
24} // namespace hash_detail
25
26namespace container_hash
27{
28
29template<class T> struct is_tuple_like: hash_detail::is_tuple_like_< typename std::remove_cv<T>::type >
30{
31};
32
33} // namespace container_hash
34} // namespace boost
35
36#endif // #ifndef BOOST_HASH_IS_TUPLE_LIKE_HPP_INCLUDED
37

source code of boost/libs/container_hash/include/boost/container_hash/is_tuple_like.hpp