#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