#pragma once
namespacehaar_lib{template<typenameMonoid>structdual_monoid{usingvalue_type=typenameMonoid::value_type;conststaticMonoidM;value_typeoperator()()const{returnM();}value_typeoperator()(constvalue_type&a,constvalue_type&b)const{returnM(b,a);}};}// namespace haar_lib