Add vtkm::Tuple class
Add a vtkm::Tuple
class that is very similar in nature to std::tuple
. This should replace our use of tao tuple.
The motivation for this change was some recent attempts at removing objects like Invocation
and FunctionInterface
. I expected these changes to speed up the build, but in fact they ended up slowing down the build. I believe the problem was that these required packing variable parameters into a tuple. I was using the tao tuple
class, but it seemed to slow down the compile. (That is, compiling tao's tuple
seemed much slower than compiling the equivalent FunctionInterface
class.)
The implementation of vtkm::Tuple
is using pyexpander
to build lots of simple template cases for the object (with a backup implementation for even longer argument lists). I believe the compiler is better and parsing through thousands of lines of simple templates than to employ clever MPL to build general templates.