Simplify the recursive tmeplate in TypedKernel

PiperOrigin-RevId: 259897561
This commit is contained in:
Gunhan Gulsoy 2019-07-25 00:46:27 -07:00 committed by TensorFlower Gardener
parent 24b3e6cf73
commit 87e03a53f3

View File

@ -525,16 +525,19 @@ class TypedKernel : public KernelBase {
// structure.
void PackParams(KernelArgsArray<kNumberOfParameters> *args,
Params &... params) const {
PackOneParam(args, params...);
PackOneParamFromList(args, params...);
}
template <typename T, typename... RestOfParams>
void PackOneParam(KernelArgsArray<kNumberOfParameters> *args, const T &arg,
const RestOfParams &... rest) const {
void PackOneParamFromList(KernelArgsArray<kNumberOfParameters> *args,
const T &arg, const RestOfParams &... rest) const {
PackOneParam(args, arg);
PackOneParam(args, rest...);
PackOneParamFromList(args, rest...);
}
// Base case for variadic template expansion - nothing to do!
void PackOneParamFromList(KernelArgsArray<kNumberOfParameters> *args) const {}
// Packs one (non-DeviceMemoryBase) parameter into the arg and sizes array.
// The enable_if<> is for excluding DeviceMemoryBase args, which have a
// separate implementation below.
@ -581,9 +584,6 @@ class TypedKernel : public KernelBase {
args->add_shared_bytes(arg.size());
}
// Base case for variadic template expansion - nothing to do!
void PackOneParam(KernelArgsArray<kNumberOfParameters> *args) const {}
SE_DISALLOW_COPY_AND_ASSIGN(TypedKernel);
};