Add support for multiple data types (remainder of #196) #203
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Addresses #95 and #111.
Follow-up to #198, #199, #201
Trying again, since #130 failed. This time, I made the
Model
class to be polymorphic. This way, the amount of pointer indirection is minimized.Summary:
Model
is an opaque container that wraps the polymorphic handleModelImpl<ThresholdType, LeafOutputType>
. The handle in turn stores the list of treesTree<ThresholdType, LeafOutputType>
. To unbox theModel
container and obtainModelImpl<ThresholdType, LeafOutputType>
, useModel::Dispatch(<lambda expression>)
.Also, upgrade to C++14 to access the generic lambda feature, which proved to be very useful in the dispatching logic for the polymorphic
Model
class.