Add BinaryGains() to SFINAE check

This commit is contained in:
Rishabh Garg
2021-07-13 13:42:38 +05:30
parent ed21bb6a89
commit d0ecbf5f85
2 changed files with 10 additions and 2 deletions
@@ -29,6 +29,10 @@ HAS_MEM_FUNC(BinaryScanInitialize, HasBinaryScanInitialize);
// we can use with SFINAE to catch when a type has a BinaryStep(...) function.
HAS_MEM_FUNC(BinaryStep, HasBinaryStep);
// This gives us a HasBinaryGains<T, U> type (where U is a function pointer)
// we can use with SFINAE to catch when a type has a BinaryGains(...) function.
HAS_MEM_FUNC(BinaryGains, HasBinaryGains);
/**
* The BestBinaryNumericSplit is a splitting function for decision trees that
* will exhaustively search a numeric dimension for the best binary split.
@@ -134,7 +138,9 @@ class BestBinaryNumericSplit
HasBinaryScanInitialize<FitnessFunction, void(FitnessFunction::*)
(const ResponsesType&, const WeightVecType&, const size_t)>::value &&
HasBinaryStep<FitnessFunction, void(FitnessFunction::*)
(const ResponsesType&, const WeightVecType&, const size_t)>::value,
(const ResponsesType&, const WeightVecType&, const size_t)>::value &&
HasBinaryGains<FitnessFunction,
std::tuple<double, double>(FitnessFunction::*)()>::value,
double>::type
SplitIfBetter(
const double bestGain,
@@ -327,7 +327,9 @@ typename std::enable_if<
HasBinaryScanInitialize<FitnessFunction, void(FitnessFunction::*)
(const ResponsesType&, const WeightVecType&, const size_t)>::value &&
HasBinaryStep<FitnessFunction, void(FitnessFunction::*)
(const ResponsesType&, const WeightVecType&, const size_t)>::value,
(const ResponsesType&, const WeightVecType&, const size_t)>::value &&
HasBinaryGains<FitnessFunction,
std::tuple<double, double>(FitnessFunction::*)()>::value,
double>::type
BestBinaryNumericSplit<FitnessFunction>::SplitIfBetter(
const double bestGain,