<commit_before>#ifndef __COMPILE_UTILS__IS_TUPLE_CONVERTIBLE_HPP__
#define __COMPILE_UTILS__IS_TUPLE_CONVERTIBLE_HPP__

#include <boost/integer/static_min_max.hpp>
#include <tuple>

namespace CompileUtils {
  template <size_t I, class From, class To>
    struct is_tuple_convertible_ {
      static constexpr bool value =
        std::is_convertible<
        typename std::tuple_element<I-1,From>::type,
                 typename std::tuple_element<I-1,To>::type
                   >::value && is_tuple_convertible_<I-1,From,To>::value;
    };

  template <class From, class To>
    struct is_tuple_convertible_<0, From, To> {
      static constexpr bool value = true;
    };

  template <class From, class To>
    struct is_tuple_convertible {
      static constexpr bool value =
        is_tuple_convertible_<
        boost::static_unsigned_min<
        std::tuple_size<From>::value,
        std::tuple_size<To>::value
          >::value,
        From, To>::value;
    };
};

#endif<commit_msg>Fixed a bug with tuples of different sizes.<commit_after>#ifndef __COMPILE_UTILS__IS_TUPLE_CONVERTIBLE_HPP__
#define __COMPILE_UTILS__IS_TUPLE_CONVERTIBLE_HPP__

#include <boost/integer/static_min_max.hpp>
#include <tuple>

namespace CompileUtils {
  template <size_t I, class From, class To>
    struct is_tuple_convertible_ {
      static constexpr bool value =
        std::is_convertible<
        typename std::tuple_element<I-1,From>::type,
                 typename std::tuple_element<I-1,To>::type
                   >::value && is_tuple_convertible_<I-1,From,To>::value;
    };

  template <class From, class To>
    struct is_tuple_convertible_<0, From, To> {
      static constexpr bool value = true;
    };

  template <class From, class To>
    struct is_tuple_convertible {
      static constexpr bool value =
        std::tuple_size<From>::value == std::tuple_size<To>::value &&
        is_tuple_convertible_<std::tuple_size<From>::value, From, To>::value;
    };
};

#endif
{'fraction_non_alphanumeric': 0.10685483870967742, 'fraction_numerical': 0.004032258064516129, 'mean_word_length': 3.460674157303371, 'pattern_counts': {'":': 0, '<': 31, '<?xml version=': 0, '>': 31, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '6119135', 'n_tokens_mistral': 664, 'n_tokens_neox': 636, 'n_words': 130}