Skip to content

Add vtkm::Tuple class

Kenneth Moreland requested to merge kmorel/vtk-m:vtkm-tuple into master

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.

Merge request reports