Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-09-17 08:33:43

0001 #ifndef BOOST_HASH2_HAS_CONSTANT_SIZE_HPP_INCLUDED
0002 #define BOOST_HASH2_HAS_CONSTANT_SIZE_HPP_INCLUDED
0003 
0004 // Copyright 2024 Peter Dimov
0005 // Distributed under the Boost Software License, Version 1.0.
0006 // https://www.boost.org/LICENSE_1_0.txt
0007 
0008 #include <type_traits>
0009 #include <utility>
0010 
0011 namespace boost
0012 {
0013 
0014 // forward declaration
0015 template<class T, std::size_t N> class array;
0016     
0017 namespace hash2
0018 {
0019 
0020 // forward declaration
0021 template<std::size_t N> class digest;
0022 
0023 // detail::has_tuple_size
0024 
0025 namespace detail
0026 {
0027 
0028 template<class T, class En = void> struct has_tuple_size: std::false_type
0029 {
0030 };
0031 
0032 template<class T> struct has_tuple_size<T,
0033     typename std::enable_if<
0034         std::tuple_size<T>::value == std::tuple_size<T>::value
0035     >::type
0036 >: std::true_type
0037 {
0038 };
0039 
0040 } // namespace detail
0041 
0042 // has_constant_size
0043 
0044 template<class T> struct has_constant_size: detail::has_tuple_size<T>
0045 {
0046 };
0047 
0048 template<class T, std::size_t N> struct has_constant_size< boost::array<T, N> >: std::true_type
0049 {
0050 };
0051 
0052 template<std::size_t N> struct has_constant_size< digest<N> >: std::true_type
0053 {
0054 };
0055 
0056 template<class T> struct has_constant_size<T const>: has_constant_size<T>
0057 {
0058 };
0059 
0060 } // namespace hash2
0061 } // namespace boost
0062 
0063 #endif // #ifndef BOOST_HASH2_HAS_CONSTANT_SIZE_HPP_INCLUDED