Revision 450b24e6a7b915dda381fd5c35f4354988ddd333 authored by Vincenzo Eduardo Padulano on 03 June 2024, 06:34:42 UTC, committed by Vincenzo Eduardo Padulano on 04 June 2024, 15:03:53 UTC
In the RDataFrame computation graph execution, the `RAction::Run` method is responsible for requesting the values from the readers that are necessary for that action. This is done by calling `RColumnReaderBase::Get` with the correct template type given by the variadic argument type list of the action, which corresponds to the list of column types that action requires.

So far, this variadic template function call was done by simply unpacking the argument pack as the arguments to the `Exec` function of the action helper data member. This meant that the execution order was never guaranteed (undefined until C++17, unspecified since), according to the explanation at https://en.cppreference.com/w/cpp/language/eval_order.

This commit ensures that the execution order of the calls to the `Get` method of the readers is done left to right, following the same order of the template parameter pack. This is done by using the sequenced-before feature of the list-initialization of any C++ struct/class. A simple struct helper is used to this end.
1 parent 2ddc3b1
History

README.md

back to top