Investigate/implement auto-expanding templated evaluate method functionality.
Find the appropriate syntax and semantic usage;
struct LocalEvaluator { ... };
struct ParentEvaluator { ... };
struct GlobalEvaluator { ... };
struct CustomEvaluator { ... };
template <typename... Evaluator_Ts>
class A {
public:
using Evaluator = Evaluator_T;
friend class Evaluator;
template <SpecificEvaluator_T>
void evaluate() {
return SpesificEvaluator::evaluate(this);
}
template <typename Sampler_T, typename Evaluator_T, typename... Arg_Ts>
void sample(Arg_Ts ...args) {
return Sample<Evaluator_T>::sample(args);
}
};