<commit_before>#ifndef FALCON_SFINAE_HAS_TYPE_HPP
#define FALCON_SFINAE_HAS_TYPE_HPP

#include <falcon/type_traits/integral_constant.hpp>
#include <falcon/type_traits/enable_template.hpp>
#include <falcon/type_traits/enable_type.hpp>


#define FALCON_HAS_TYPE_TRAIT_NAMED_DEF(_Name, _TypeName)\
  template<typename Falcon_T, class = void>\
  struct __falcon_##_Name##__has_type_test\
  : ::falcon::false_type {};\
  \
  template<typename Falcon_T>\
  struct __falcon_##_Name##__has_type_test<Falcon_T\
  , typename ::falcon::enable_type<typename Falcon_T::_TypeName>::type>\
  : ::falcon::true_type {};\
  \
  template<typename Falcon_T>\
  struct _Name : __falcon_##_Name##__has_type_test<Falcon_T>::type {\
    static const bool value = __falcon_##_Name##__has_type_test<Falcon_T>::value;\
  }

#define FALCON_HAS_TYPE_NAME(_TypeName) has_##_TypeName


#if __cplusplus >= 201103L
# define __FALCON_HAS_TEMPLATE_TYPE_TRAIT_NAMED_DEF(_Name, _TypeName)\
  template<typename Falcon_T>\
  struct __falcon_##_Name##__has_template_type_test<Falcon_T\
  , typename ::falcon::enable_template<Falcon_T::template _TypeName>::type>\
  : ::falcon::true_type {};
#else
# define __FALCON_HAS_TEMPLATE_TYPE_TRAIT_NAMED_DEF(_Name, _TypeName)\
  template<typename Falcon_T>\
  struct __falcon_##_Name##__has_template_type_test<Falcon_T\
  , typename ::falcon::enable_template1<Falcon_T::template _TypeName>::type>\
  : ::falcon::true_type {};\
  \
  template<typename Falcon_T>\
  struct __falcon_##_Name##__has_template_type_test<Falcon_T\
  , typename ::falcon::enable_template2<Falcon_T::template _TypeName>::type>\
  : ::falcon::true_type {};
#endif

#define FALCON_HAS_TEMPLATE_TYPE_TRAIT_NAMED_DEF(_Name, _TypeName)\
	template<typename Falcon_T, class = void>\
	struct __falcon_##_Name##__has_template_type_test\
	: ::falcon::false_type {};\
  \
  __FALCON_HAS_TEMPLATE_TYPE_TRAIT_NAMED_DEF(_Name, _TypeName)\
  \
  template<typename Falcon_T>\
  struct _Name : __falcon_##_Name##__has_template_type_test<Falcon_T>::type {\
    const static bool value = \
      __falcon_##_Name##__has_template_type_test<Falcon_T>::value;\
  }


#define FALCON_HAS_TYPE_TRAIT_DEF(_TypeName)\
  FALCON_HAS_TYPE_TRAIT_NAMED_DEF(has_##_TypeName, _TypeName)

#define FALCON_HAS_TEMPLATE_TYPE_TRAIT_DEF(_TypeName)\
  FALCON_HAS_TEMPLATE_TYPE_TRAIT_NAMED_DEF(has_template_##_TypeName, _TypeName)

#endif<commit_msg>FALCON_HAS_TEMPLATE_TYPE_NAME() and code cleaning<commit_after>#ifndef FALCON_SFINAE_HAS_TYPE_HPP
#define FALCON_SFINAE_HAS_TYPE_HPP

#include <falcon/type_traits/integral_constant.hpp>
#include <falcon/type_traits/enable_template.hpp>
#include <falcon/type_traits/enable_type.hpp>
#include <falcon/preprocessor/concat.hpp>


#define FALCON_HAS_TYPE_TRAIT_NAMED_DEF(trait, name)\
  template<typename Falcon_T, class = void>\
  struct FALCON_CONCAT(trait,_impl)\
  : ::falcon::false_type {};\
  \
  template<typename Falcon_T>\
  struct FALCON_CONCAT(trait,_impl)<Falcon_T\
  , typename ::falcon::enable_type<typename Falcon_T::name>::type>\
  : ::falcon::true_type {};\
  \
  template<typename Falcon_T>\
  struct trait : FALCON_CONCAT(trait,_impl)<Falcon_T>::type {}


#if __cplusplus >= 201103L
# define FALCON_HAS_TEMPLATE_TYPE_TRAIT_NAMED_DEF_S(trait, name)\
  template<typename Falcon_T>\
  struct FALCON_CONCAT(trait,_impl)<Falcon_T\
  , typename ::falcon::enable_template<Falcon_T::template name>::type>\
  : ::falcon::true_type {};
#else
# define FALCON_HAS_TEMPLATE_TYPE_TRAIT_NAMED_DEF_S(trait, name)\
  template<typename Falcon_T>\
  struct FALCON_CONCAT(trait,_impl)<Falcon_T\
  , typename ::falcon::enable_template1<Falcon_T::template name>::type>\
  : ::falcon::true_type {};\
  \
  template<typename Falcon_T>\
  struct FALCON_CONCAT(trait,_impl)<Falcon_T\
  , typename ::falcon::enable_template2<Falcon_T::template name>::type>\
  : ::falcon::true_type {};
#endif

#define FALCON_HAS_TEMPLATE_TYPE_TRAIT_NAMED_DEF(trait, name)\
	template<typename Falcon_T, class = void>\
	struct FALCON_CONCAT(trait,_impl)\
	: ::falcon::false_type {};\
  \
  FALCON_HAS_TEMPLATE_TYPE_TRAIT_NAMED_DEF_S(trait, name)\
  \
  template<typename Falcon_T>\
  struct trait : FALCON_CONCAT(trait,_impl)<Falcon_T>::type {}


#define FALCON_HAS_TYPE_NAME(name) FALCON_CONCAT(has_,name)

#define FALCON_HAS_TYPE_TRAIT_DEF(name)\
  FALCON_HAS_TYPE_TRAIT_NAMED_DEF(FALCON_HAS_TYPE_NAME(name), name)


#define FALCON_HAS_TEMPLATE_TYPE_NAME(name) FALCON_CONCAT(has_template_,name)

#define FALCON_HAS_TEMPLATE_TYPE_TRAIT_DEF(name)\
  FALCON_HAS_TEMPLATE_TYPE_TRAIT_NAMED_DEF(FALCON_HAS_TEMPLATE_TYPE_NAME(name), name)

#endif
{'fraction_non_alphanumeric': 0.124101894186806, 'fraction_numerical': 0.0034835619420857827, 'mean_word_length': 7.476014760147602, 'pattern_counts': {'":': 0, '<': 48, '<?xml version=': 0, '>': 50, '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': '6480810', 'n_tokens_mistral': 1901, 'n_tokens_neox': 1806, 'n_words': 211}