#ifndef VARIABLE_ASSIGNMENT_HPP #define VARIABLE_ASSIGNMENT_HPP #include "Expression.hpp" #include "IdMap.hpp" template struct VariableAssignment { virtual ~VariableAssignment() { } virtual const Domain& operator[](const Variable&) const = 0; }; template struct StableVariableAssignment : public VariableAssignment, public IdMap, Domain> { StableVariableAssignment(unsigned int length) : IdMap,Domain>(length, -infinity()) { } StableVariableAssignment(unsigned int length, const Domain& value) : IdMap,Domain>(length, value) { } const Domain& operator[](const Variable& var) const { return IdMap,Domain>::operator[](var); } Domain& operator[](const Variable& var) { return IdMap,Domain>::operator[](var); } }; #endif