<commit_before>﻿#ifndef FuncUtilsH
#define FuncUtilsH

//// [!] Version 1.01 [!]

#include <utility>     // for 'std::move', 'std::forward'
#include <type_traits> // for 'std::is_same'

//// A functor (Function Object) CAN also be possibly used as a 'ProcName' OR 'FuncName'<commit_msg>'FuncUtils' module: added instruction how to use the idiom's dfeine gurad<commit_after>﻿#ifndef FuncUtilsH
#define FuncUtilsH

//// [!] Version 1.011 [!]

#include <utility>     // for 'std::move', 'std::forward'
#include <type_traits> // for 'std::is_same'

/* Use following define guard to avoid multiple definitions:

#ifndef <func. / proc. name>_EXEC_MEMBER_<FUNC / PROC>_IF_PRESENT_
  #define <func. / proc. name>_EXEC_MEMBER_<FUNC / PROC>_IF_PRESENT_
  EXEC_MEMBER_<FUNC / PROC>_IF_PRESENT(<func. / proc. name>, <default val.>)
#endif

Example:

#ifndef getHashIfKnown_EXEC_MEMBER_FUNC_IF_PRESENT_
  #define getHashIfKnown_EXEC_MEMBER_FUNC_IF_PRESENT_
  EXEC_MEMBER_FUNC_IF_PRESENT(getHashIfKnown, size_t())
#endif
*/

//// A functor (Function Object) CAN also be possibly used as a 'ProcName' OR 'FuncName'
{'fraction_non_alphanumeric': 0.13739763421292084, 'fraction_numerical': 0.006369426751592357, 'mean_word_length': 4.882352941176471, 'pattern_counts': {'":': 0, '<': 14, '<?xml version=': 0, '>': 14, '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': '6287406', 'n_tokens_mistral': 418, 'n_tokens_neox': 392, 'n_words': 100}