#include <ArrayHandler.h>
Registers operations identified by their Arguments
| Args | arguments to the operation. Consider using reference_wrapper if arguments are references. |
Public Types | |
| using | OP = std::tuple< Args... > |
Public Member Functions | |
| template<int N, class ArgEqual > | |
| void | push (const Args &...args, ArgEqual equal) |
| void | push (const Args &...args) |
| Register each operation as it comes with no reordering. More... | |
| bool | empty () |
| void | clear () |
Public Attributes | |
| std::list< std::tuple< Args... > > | m_register |
| ordered register of operations More... | |
| using molpro::linalg::array::util::OperationRegister< Args >::OP = std::tuple<Args...> |
|
inline |
|
inline |
|
inline |
Register each operation as it comes with no reordering.
|
inline |
Push a new operation to the register, collecting all operations marked under Nth argument into consecutive groups. Those groups are ordered on a first come basis.
| N | if N >= 0 order operations by grouping identical Nth arguments together, otherwise no reordering |
| ArgEqual | functor bool operator()(const Arg&, const Arg&); returning true if two Nth arguments are equal |
| std::list<std::tuple<Args...> > molpro::linalg::array::util::OperationRegister< Args >::m_register |
ordered register of operations